正則表達式匹配對稱小括號


正則表達式里面最難的就是匹配對應的括號.設計的到入棧出棧問題:

  • (?'group') 把捕獲的內容命名為group,並壓入堆棧(Stack)
  • (?'-group') 從堆棧上彈出最后壓入堆棧的名為group的捕獲內容,如果堆棧本來為空,則本分組的匹配失敗
  • (?(group)yes|no) 如果堆棧上存在以名為group的捕獲內容的話,繼續匹配yes部分的表達式,否則繼續匹配no部分

例子為小括號,組名為Open,碰到左括號,入棧一個"Open",碰到右括號,出棧一個"Open",如果全部出棧就結束.

大家可以試一下下面的小括號是否可以.

\([^()]*(((?'Open'\()[^()]*)+((?'-Open'\))[^()]*)+)*\)

 

大家還可以試試for循環中的大括號

 

 for\s*\(.*?\)\s*\{[^{}]*(((?'Open'\{)[^{}]*)+((?'-Open'\})[^{}]*)+)*\} 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM