在可能包含其他支架的支架之间匹配

时间:2018-05-20 08:58:02

标签: regex

我正在尝试找到一个与可能包含其他brakets的brakets相匹配的正则表达式。

示例:

Match1(Match2())

我希望输出为: 匹配1:
  $ 0 => 'Match1(Match2())'
  $ 1 => 'Match1'
  $ 2 => 'MATCH2()'
MATCH2:   $ 0 => 'Match2()'
  $ 1 => 'Match2'
  $ 2 => ''

有没有办法完成它,例如\w+\(.*?\)

1 个答案:

答案 0 :(得分:0)

PCRE模式(([^()]+)\(((?R)?)\))与您的输入匹配,如下所示:

  • 第1组:Match1(Match2())
  • 第2组:Match1
  • 第3组:Match2()

注意:Python的正则表达式模块,Perl,.NET,Ruby 2.0和PHP支持递归模式。其他流行的语言,如JavaScript,Ruby< 1.9和Java则没有。请参阅:https://www.regular-expressions.info/recurse.html

演示:https://regex101.com/r/mX2fG5/57