簡體   English   中英

正則表達式獲取介於兩者之間的所有內容

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM