簡體   English   中英

正則表達式在帶括號的另一個字符串中查找帶括號的字符串

[英]Regex finding string with parenthesis in another string with parenthesis

這是我的帕滕: (TABLE[0-9]+)\\(((?<=\\()(.*?)(?=\\)))[(?=\\))\\)]

這是我正在查看的字符串: (TABLE3(1.6+TABLE1(2)))*TABLE2(1)*TABLE11(1)*(1.19017735023328)

我得到的是:

  • 表3(1.6 + TABLE1(2)
  • TABLE2(1)
  • 表11(1)

我需要第一個是:TABLE3(1.6 + TABLE1(2))

我怎樣才能做到這一點?

TABLE[0-9]+之后使用平衡組構造:

TABLE[0-9]+\((?>[^()]|(?<o>)\(|(?<-o>)\))*(?(o)(?!))\)

參見regex演示

在此處輸入圖片說明

細節

  • TABLE[0-9]+ -匹配TABLE和1+位數字
  • \\( -開放(
  • (?>[^()]|(?<o>)\\(|(?<-o>)\\))* -零次或多次出現
    • [^()] -除()任何字符
    • | - 要么
    • (?<o>)\\( -一個( (並遞增的堆疊o基團)
    • | - 要么
    • (?<-o>)\\) -a ) (並減少o組的堆棧)
  • (?(o)(?!)) -如果組o堆棧不為空,則匹配失敗(觸發回溯)
  • \\) -a )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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