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]
尝试下面的正则表达式(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);