Regex来获取两者之间的所有内容

本文关键字:获取 两者之间 Regex | 更新日期: 2023-09-27 18:08:22

我需要从下面的查询中获取内容,该查询以[PT]结尾,并且在文本中以$结尾。

17 and  ( am restaur$ or food$[]produc$ )[PT]
*neo$ &  ( bruch$ | curl$ | hair$ )[PT]
( computer$ or software$ or hardware$ or peripheral$ or conductor$ )[PT]

预期结果:餐馆,食物,产品…

我试过下面的REGEX

(?<=[(])(.*)(?=([)][[]PT))
[PT]

Regex来获取两者之间的所有内容

尝试下面的正则表达式(Javascript),

k.match(/('w*)'$/g).join("").split("$");

其中k包含您的字符串,例如:k = "17 and ( restaur$ or food$[]produc$ )[PT]";这里'w将匹配所有单词字符,match函数返回字符串中的所有匹配项。

下面的代码片段使用了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);