[英]Regex - everything but anything within parenthesis
有,讓我們說:
fieldA=20 and (fieldB=date() and (fieldC=35 and fieldD=40)) and fieldE = 100
我正在嘗試更換“和”字樣的東西:
fieldA=20 zzz (fieldB=date() and (fieldC=35 and fieldD=40)) zzz fieldE = 100
我已經試了幾個小時,沒有成功。 我可以找到一些關於如何將所有內容括在括號或括號內的答案。 下面的表達式將所有內容都放在括號內,但我實際上並不知道如何編寫一個忽略它的表達式:
\(([^()]*+|(?R))*\) # retrieves "(fieldB=date() and (fieldC=35 and fieldD=40))"
任何幫助,將不勝感激。
你的\\(([^()]*+|(?R))*\\)
模式包含一個完整的模式遞歸結構(?R)
允許匹配嵌套括號及其中的所有內容。 你需要的是省略與這個子模式匹配的所有內容並匹配, and
除此之外的整個單詞。 我們需要將整個子模式放入捕獲組並用(?1)
替換(?R)
(?1)
以僅遞歸第一個捕獲組模式,而不是整個模式。
(*SKIP)(?!)
構造可用於省略PCRE正則表達式中當前匹配的替代方案。
因此,使用
(\(([^()]*+|(?1))*\))(*SKIP)(?!)|\band\b
請參閱正則表達式演示
簡而言之,
(\\(([^()]*+|(?1))*\\))(*SKIP)(?!)
- 將嵌套括號與內部所有內容相匹配,省略此匹配文本並繼續分析字符串 |
- 要么... \\band\\b
- 匹配並返回整個單詞and
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.