【问题标题】:Match balanced brackets after certain string在某些字符串之后匹配平衡括号
【发布时间】:2017-07-26 13:53:52
【问题描述】:

在某个字符串“if”之后匹配平衡括号时遇到问题。我知道我可以使用

匹配平衡括号
((?>[^()]|(?R))?\)

而且效果很好。但是,当我在这个正则表达式之前添加我的字符​​串“if”时

if[ \t]*((?>[^()]|(?R))?\)

它只匹配“if”之后的单个平衡括号。

在线演示:https://regex101.com/r/6lg0qi/3

【问题讨论】:

标签: regex perl


【解决方案1】:

(?R) 表示递归整个模式,而您需要递归其中的一部分:

if[ \t]*(\((?>[^()]+|(?1))*\))

Live demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    相关资源
    最近更新 更多