我需要从下面的查询中获取内容,该内容以[PT]结尾,并且还包含在最后有$的文本内。
selectionKey.cancel();
selector.selectNow();
channel.close();
预期结果: 我是餐馆,食品,产品...
我试过以下REGEX
17 and ( am restaur$ or food$[]produc$ )[PT]
*neo$ & ( bruch$ | curl$ | hair$ )[PT]
( computer$ or software$ or hardware$ or peripheral$ or conductor$ )[PT]
它只在[PT]
之间提供文字答案 0 :(得分:0)
尝试以下正则表达式(Javascript),
k.match(/(\w*)\$/g).join("").split("$");
其中k
包含您的字符串,例如:k = "17 and ( restaur$ or food$[]produc$ )[PT]"
;这里\w
将匹配所有单词字符,匹配函数返回字符串中的所有匹配项。
答案 1 :(得分:0)
下面的代码段使用2个正则表达式模式 第一个获得PT内容的人 第二个是从那些匹配中获取值。
var str = "17 and ( restaur$ or food$[]produc$ )[PT]\
*neo$ & ( bruch$ | curl$ | hair$ )[PT]\
( computer$ or software$ or hardware$ or peripheral$ or conductor$ )[PT]\
16 and ( illumination$ [TS] ) and ( racing | ( auto$ adj rac$ ) | auto$ | car )[PT]";
//var re1 = /\([^()]*?\)\[PT\]/g;
var re1 = /\((?:[^()]*?(?:\(.*\)(?!\[)))*[^()]*?\)\[PT\]/g;
var re2 = /\w+(?=\$)/g;
var matchArray = [];
var m1, m2;
while (m1 = re1.exec(str)) {
console.log(m1[0]);
while (m2 = re2.exec(m1[0])) {
matchArray.push(m2[0]);
}
}
console.log(matchArray);