我不明白为什么这两种表达方式不同:
^(\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不完全是我所期望的
发布于 2016-09-14 16:21:56
尝试以下正则表达式,该正则表达式捕获至少一个数字的所有数字,并将它们放置到不同的组中:
(?<=^|\.)(\d+)(?=\.|$)工作起来很简单。让我们描述一下正则表达式的各个部分:
(?<=^|\.)是检查数字\d+是否跟随点.字符(注意必须转义\.,否则表示任何字符)或行^开头的正向后检查。\d+是一个要捕获的数字(?=\.|$)是检查数字\d+后面是点.还是行$末尾的正向前瞻。在Regex101上尝试一下,更详细的解释是什么。
https://stackoverflow.com/questions/39495166
复制相似问题