[英]Regex to get everything in between
我需要從下面以 [PT] 結尾的查詢中獲取內容,並且還需要在末尾帶有 $ 的文本中獲取內容。
17 and ( am restaur$ or food$[]produc$ )[PT]
*neo$ & ( bruch$ | curl$ | hair$ )[PT]
( computer$ or software$ or hardware$ or peripheral$ or conductor$ )[PT]
預期結果:上午餐廳、食品、產品...
我試過下面的正則表達式
(?<=[(])(.*)(?=([)][[]PT))
它只給出 [PT] 之間的文本
試試下面的正則表達式(Javascript),
k.match(/(\w*)\$/g).join("").split("$");
其中k
包含您的字符串,例如: k = "17 and ( restaur$ or food$[]produc$ )[PT]"
; 這里\\w
將匹配所有單詞字符,匹配函數返回字符串中的所有匹配項。
下面的代碼片段使用 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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.