我可以在一个组中有一个组的情况下使用这样的正则表达式吗?如果是这样,在 .NET 中哪个是第 1 组,哪个是第 2 组?
^(abc(def))$
首先开始的组(从左到右读取)总是编号较低的1。在这种情况下,“外”组是#1,“内”组是#2。
考虑使用命名匹配子表达式(又名命名组)以避免混淆 - 至少在更复杂的情况下:
^(?<outer>abc(?<inner>def))$
1 MSDN的措辞:
使用括号的捕获会根据正则表达式中左括号的顺序从左到右自动编号,从 1 开始。