【发布时间】:2017-01-22 12:55:54
【问题描述】:
我不明白为什么这两种表达方式不同:
^(\d+)(?:\.(\d+))?(?:\.(\d+))?$
applied to 1.0.3
group 1 =>1
group 2 =>0
group 3 =>3
这是预期的。但如果我尝试将它概括为任何系列的\d\. 那么它就不再起作用了:
^(\d+)(?:\.(\d+))+$
applied to 1.0.3
group 1 =>1
group 2 =>3
除了第一个和最后一个条目消失之外,对我来说一切都很奇怪:
^(\d+)(?:\.(\d+))+$
applied to 1.2.3.4.5.6.7.8.9
group 1 =>1
group 2 =>9
不完全是我所期待的
【问题讨论】:
-
第二个捕获组中只有最后一个匹配的文本可用。组不是动态的,无论您定义多少组,您都会在匹配结果中获得。
-
重复捕获组的行为如下。
标签: java regex capturing-group