Javascript正则表达式不能分割

Javascript regular expression can't split

本文关键字:分割 不能分 不能 正则表达式 Javascript      更新时间:2023-09-26

我有一些文本,比如

<<<<((((sports====1000))))>>>> 

<<<<((((sports====1000))))((((librarys====2000))))>>>> 

我的问题是我从这里得到文本,比如

text[0][0] = 'sports';
text[0][1] = '1000';
text[1][0] = 'library';
text[1][1] = '2000';
如有任何帮助,我将不胜感激。

你可以尝试分割除内容以外的所有元素,然后删除数组中的空元素。

s="<<<<((((sports====1000))))((((librarys====2000))))>>>>";
s.split(/[<()>=]/).filter(function(ele){if (ele!="") return true});
=> ["sports", "1000", "librarys", "2000"]

这是一种hack,因为我不知道你的文本的语法,这可能会或可能不会为你工作。

又一个hack:

s="<<<<((((sports====1000))))((((librarys====2000))))((((no_value====))))>>>>";
arr = s.replace("====)","====nil").
  split(/[<'(')>=]/).
  filter(function(ele){if (ele!="") return true});
var res=[]; 
for(var i = 0; i < arr.length; i+=2) { res.push([arr[i],arr[i+1]]); }
res
=> [["sports", "1000"], ["librarys", "2000"], ["no_value", "nil"]]

regex获取的元素如下所示:

'({4}(.+?)={4}(.+?)'){4}

参见这个例子

试试这段代码。

var test  = "<<<<((((sports=====))))((((====2000))))((((hall====2000))))>>>>";
textAfterSplit1 = test.split(/[(<>)]/);
var myarray = [];
for (i=0; i <(textAfterSplit1.length); i++){
    textAfterSplit2 = textAfterSplit1[i].split(/[=]/);
    if (textAfterSplit2[0] == null){
        textAfterSplit2[0]= "";
    }
    if (textAfterSplit2[1] == null) {
        textAfterSplit2[1]= ""; 
    }
    myarray.push([textAfterSplit2[0],textAfterSplit2[1]]);
}
document.write(myarray[0][0]);
document.write(myarray[0][1]);
document.write(myarray[1][0]);
document.write(myarray[1][1]);

预期输出:

sports2000

它在所有情况下都有效。希望这能帮到你。干杯!