捕获组嵌套如何影响组编号?

时间:2013-03-30 02:01:35

标签: c# regex

我可以拥有这样的正则表达式,我在一个组中有一个组吗?如果是这样,在.NET中是第1组,哪个是第2组?

^(abc(def))$

1 个答案:

答案 0 :(得分:2)

首先启动的组(从左到右读取)始终低于编号 1 。在这种情况下,“外部”组是#1,“内部”组是#2。

考虑使用Named Matched Subexpressions (aka named groups)来避免混淆 - 至少在更复杂的情况下:

^(?<outer>abc(?<inner>def))$

1 来自MSDN的措辞:

  

使用括号的捕获根据正则表达式中左括号的顺序从左到右自动编号,从1开始。