【发布时间】:2019-01-11 09:02:39
【问题描述】:
令我惊讶的是,我很难在 SO 上找到类似问题的答案。我想匹配某些功能中的所有内容。这个想法是删除无用的功能。
foo(some (content)) --> some (content)
所以我试图匹配函数调用中可以包含括号的所有内容。这是我的 PCRE 正则表达式:
(?<name>\w+)\s*\(\K
(?<e>
[^()]+
|
[^()]*
\((?&e)\)
[^()]*
)*
(?=\))
https://regex101.com/r/gfMAIM/1
不幸的是,它不起作用,我真的不明白为什么。
【问题讨论】:
-
被检查的函数调用是否总是在行的开头?
-
@Predicate 假设一切都是一行,但你可以在这一行找到多个函数调用:
foo(); bar()\n -
有没有办法使括号在所需的匹配中不平衡?