首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >regex非捕获和捕获组和未解释的消费

regex非捕获和捕获组和未解释的消费
EN

Stack Overflow用户
提问于 2016-09-14 16:11:57
回答 1查看 59关注 0票数 1

我不明白为什么这两种表达方式不同:

代码语言:javascript
复制
^(\d+)(?:\.(\d+))?(?:\.(\d+))?$
applied to 1.0.3
group 1 =>1
group 2 =>0
group 3 =>3

这是意料之中的。但是,如果我试图将其推广到任何系列\d\.,那么它就不再起作用了:

代码语言:javascript
复制
^(\d+)(?:\.(\d+))+$
applied to 1.0.3
group 1 =>1
group 2 =>3

对我来说很奇怪的是,除了第一次和最后一次进入之外,一切都消失了:

代码语言:javascript
复制
^(\d+)(?:\.(\d+))+$
applied to 1.2.3.4.5.6.7.8.9
group 1 =>1
group 2 =>9

不完全是我所期望的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-14 16:21:56

尝试以下正则表达式,该正则表达式捕获至少一个数字的所有数字,并将它们放置到不同的组中:

代码语言:javascript
复制
(?<=^|\.)(\d+)(?=\.|$)

工作起来很简单。让我们描述一下正则表达式的各个部分:

  • (?<=^|\.)是检查数字\d+是否跟随点.字符(注意必须转义\.,否则表示任何字符)或行^开头的正向后检查。
  • \d+是一个要捕获的数字
  • (?=\.|$)是检查数字\d+后面是点.还是行$末尾的正向前瞻。

Regex101上尝试一下,更详细的解释是什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39495166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档