我需要构建一个正则表达式来匹配这样的东西:
“PQR和XYZ OR(ABC或LMN)”
请帮我实现这个目标!
答案 0 :(得分:4)
正则表达式不可能正确匹配嵌套 为此,您需要context-free grammar。
我在你的评论中看到你提到你将使用.NET .NET中的“正则表达式”库实际上比人们通常称之为计算机科学中的“正则表达式”更强大 。
可以使用.NET Regexes匹配使用 balance-group definitions 的嵌套括号:
\(
(?>
[^()]+
|
(?<DEPTH>\()
|
(?<-DEPTH>\))
)*
(?(DEPTH)(?!))
\)
要使这个模式起作用,你需要忽略空格。