正则表达式之间的一切

时间:2016-09-23 09:13:29

标签: javascript c# regex

我需要从下面的查询中获取内容,该内容以[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]

之间提供文字

2 个答案:

答案 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);