0

假设我有一个匹配这样的字符串的正则表达式:

(A)(B)?(C)(D)?(E)(F)?

其中 B、D 和 F 组是可选的。

我怎样才能得到只是组E?我问这个是因为,我认为我不能直接打电话M.group(5),因为如果我的匹配器(M)没有找到 B 组和 D 组,那么 E 组实际上是第 3 组而不是第 5 组。

不过我确实有一个想法。如果我做了类似的事情:

((A)(B)?(C)(D)?)(E)(F)?

其中 A、B、C 和 D 都是第 1 组,我可以调用第 2 组来获取 E 吗?

谢谢你。

4

1 回答 1

2

实际上,您可以只调用 M.group(5) 因为可选的捕获组将匹配 null,per this fiddle

于 2013-08-03T22:06:59.080 回答