Python 3.x 正则表达式-如果外括号前面有特定字符,则不匹配任何内括号

Python 3.x 正则表达式-如果外括号前面有特定字符,则不匹配任何内括号,python-3.x,regex,regex-lookarounds,Python 3.x,Regex,Regex Lookarounds,我正试图想出一个正则表达式来解决以下问题: 在下面的字符串中,我只想匹配(e): 在下面的字符串中,我只想匹配(e(f)): 我提出的表达式将只排除第一个内括号: (?<!\$[^)]*)\(.+?\) (? 以下是交互式示例: 我在Python 3中使用正则表达式和正则表达式库。安装PyPi正则表达式模块(pip安装正则表达式)),然后您就可以使用 导入正则表达式 strs=['$(a(b)(c)d)(e)'',$(a(b)(c)d)(e(f))] rx=r'\$(\((?:[^()

我正试图想出一个正则表达式来解决以下问题: 在下面的字符串中,我只想匹配(e):

在下面的字符串中,我只想匹配(e(f)):

我提出的表达式将只排除第一个内括号:

(?<!\$[^)]*)\(.+?\)
(?
以下是交互式示例:

我在Python 3中使用正则表达式和正则表达式库。

安装PyPi正则表达式模块(
pip安装正则表达式)
),然后您就可以使用

导入正则表达式
strs=['$(a(b)(c)d)(e)'',$(a(b)(c)d)(e(f))]
rx=r'\$(\((?:[^()]++++(?1))*\)(*跳过)(*F);(\((?:[^()]+++(?2))*\)'
对于STR中的s:
打印([x.group()表示正则表达式中的x.finditer(rx,s)])

细节

  • \$(\((?:[^()]++++(?1))*\)(*跳过)(*F)
    -a
    $
    字符,然后在平衡嵌套圆括号之间的子字符串,然后是
    (*SKIP)(*F)
    动词使当前匹配失败并跳过它,从发生跳过的位置开始下一个模式搜索
  • |
    -或
  • (\(((?:[^()]+++(?2))*\)
    -平衡嵌套圆括号之间的子字符串

请参阅。

它是用于JavaScript的吗?这里的规则是什么?看,
(?您是为什么语言编写代码的?关于Python中的
$(a(b)(c)e)(d(e))
,如果您安装PyPi regex模块,我的第二个正则表达式建议有效,请参见此。
$(a(b)(c)d)(e(f))
(?<!\$[^)]*)\(.+?\)