不匹配 ( 和 ),但匹配 '(' 和 ')' 的正则表达式

Regex that does not match ( and ), but matches '(' and ')'

我正在尝试修复标记化中使用的正则表达式以匹配所有内容(包括 '('')' , 但不匹配 () 而不被撇号包围).

应匹配的用例示例:

目前看起来是这样的:

[^\)\(]+

目前我获得的最成功的结果是:

[^\)\(]+|\'.*?\'

这设法正确匹配如下表达式:'('AN')' , '(' , ')' , AN , '('')' , '()'.

但是 它失败了:AN'(' , AN')' , '('AN , ')'AN.

注意:我做了一些研究,发现涉及的正则表达式引擎很旧(大约 1980 年代),被称为 PCLNT (我不是 100% 确定它的名字)。我提到这一点是因为在其他一些情况下,当我处理正则表达式时,在线可用的正则表达式引擎显示了正确的结果,但在我的应用程序中它甚至没有编译。

任何帮助都会很棒,如果有人对这个可能的引擎及其文档有任何了解,请指导我。

您似乎想要匹配除了没有相邻撇号的括号之外的任何内容:

^('[()]|[()]'|[^()])+$

参见live demo

请注意,您不必在字符 class 中转义括号。

我认为您要查找的是任何包含 '(' 的字符串或任何包含 ')'

的字符串
.*(\'\(\').*|.*(\'\)\').*

Example here

此正则表达式将匹配除了括号或撇号之间的任何字符之外的任何字符组合的序列。然后它可以选择匹配单个撇号后跟任何非特殊字符序列,以捕获不成对的撇号:

([^()']*|'[^']*')*('[^'()]*)?

我对您使用的正则表达式库一无所知,但我认为该正则表达式没有任何异常之处。