我需要过滤字符串中的重复模式。字符串是:
Lorem ipsum dolor坐下来,这是一种不可或缺的精神。 Aenean commodo> ligula eget dolor>>(Special:Loremipsumdollar ### loremipsumdollar ### loremipsumdollar ###> 3.4039 ### verified),(Special:Loremipsumdollar ### loremipsumdollar ### loremipsumdollar ### > 3.4039 ###已验证)等等......
模式是
(text:text ### text ### text ### text ### text),(text:text ### text ### text ### text ### text)等等。 .....
我需要以结构形式(Better JSON)提取所有数据。 如果有人可以帮助我吗?
我正在尝试这个东西,它只返回一个匹配。
var txt='(Special:Loremipsumdollar###loremipsumdollar###loremipsumdollar ###3.4039###verified),(Special:Loremipsumdollar###loremipsumdollar###loremipsumdollar ###3.4039###verified)';
var re1='.*?'; // Non-greedy match on filler
var re2='(?:[a-z][a-z]+)'; // Uninteresting: word
var re3='.*?'; // Non-greedy match on filler
var re4='((?:[a-z][a-z]+))'; // Word 1
var re5='.*?'; // Non-greedy match on filler
var re6='((?:[a-z][a-z]+))'; // Word 2
var re7='.*?'; // Non-greedy match on filler
var re8='((?:[a-z][a-z]+))'; // Word 3
var re9='.*?'; // Non-greedy match on filler
var re10='([+-]?\\d*\\.\\d+)(?![-+0-9\\.])'; // Float 1
var re11='.*?'; // Non-greedy match on filler
var re12='((?:[a-z][a-z]+))'; // Word 4
var p = new RegExp(re1+re2+re3+re4+re5+re6+re7+re8+re9+re10+re11+re12,["i"]);
var m = p.exec(txt);
if (m != null)
{
var word1=m[1];
var word2=m[2];
var word3=m[3];
var float1=m[4];
var word4=m[5];
document.write("("+word1.replace(/</,"<")+")"+"("+word2.replace(/</,"<")+")"+"("+word3.replace(/</,"<")+")"+"("+float1.replace(/</,"<")+")"+"("+word4.replace(/</,"<")+")"+"\n");
}
答案 0 :(得分:0)
问题是exec
会返回单个匹配及其所有捕获组。要获得所有匹配项,必须多次调用exec
,直到它最终返回null。
您的代码可以更改为
var text = '(Special:Loremipsumdollar###loremipsumdollar###loremipsumdollar ###3.4039###verified),(Special:Loremipsumdollar###loremipsumdollar###loremipsumdollar ###3.59###verified)';
var regEx = /.*?(?:\w+).*?((?:\w+)).*?((?:\w+)).*?((?:\w+)).*?([+-]?\d*\.\d+).*?((?:\w+))/g;
var result, allMatches = [];
while ((result = regEx.exec(text)) != null) {
// Get all the matches in a variable
var item = {};
for (var i = 1; i < result.length; i++) {
item['word' + i] = result[i];
}
allMatches.push(item);
}
console.log(allMatches);
&#13;
使用word
\w
选择器可以修改更多正则表达式