如何为嵌套搜索条件构建正则表达式

时间:2013-05-10 07:58:21

标签: .net regex

我需要构建一个正则表达式来匹配这样的东西:

  

“PQR和XYZ OR(ABC或LMN)”

请帮我实现这个目标!

1 个答案:

答案 0 :(得分:4)

  1. 正则表达式不可能正确匹配嵌套 为此,您需要context-free grammar

  2. 我在你的评论中看到你提到你将使用.NET .NET中的“正则表达式”库实际上比人们通常称之为计算机科学中的“正则表达式”更强大

    可以使用.NET Regexes匹配使用 balance-group definitions 的嵌套括号:

    \(
      (?>
          [^()]+
        |
          (?<DEPTH>\()
        |
          (?<-DEPTH>\))
      )*
      (?(DEPTH)(?!))
    \)
    

    要使这个模式起作用,你需要忽略空格。

    请注意this isn't available in every regular expression library and is not what regular expressions are defined to be in computer science