首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不创建捕获组的情况下使用交替?

如何在不创建捕获组的情况下使用交替?
EN

Stack Overflow用户
提问于 2014-10-13 06:18:43
回答 1查看 92关注 0票数 1

我想从文本中提取URL,如下所示:

代码语言:javascript
复制
this is text

bla bla bla


http://dev.pricewombat.com/d/4
http://www.pricewombat.com/d/12/Spalding-Premier-Excel-Basketball-15-Free-Store-Pickup

我编写了以下正则表达式:

代码语言:javascript
复制
^(https?:\/\/(dev|www).pricewombat.com\/d\/[^ \n]+)$

http://regex101.com/r/iJ1fZ0/1

但是,如果您注意到我对(dev|www)使用了alternation,并且因为使用了圆括号,它会在我不想要的地方创建一个捕获组。

是否可以在不创建捕获组的情况下使用alternation?

请注意,这与这个“类似问题”不是同一个问题:Can I use an OR in regex without capturing what's enclosed?

编辑:显然这和上面的问题是一样的,我只是误解了?:运算符的工作原理。

EN

回答 1

Stack Overflow用户

发布于 2014-10-13 06:20:07

是的,您希望改用Non-capturing组。通过将?:紧跟在左括号之后,您可以指定不捕获该组,而只是对表达式进行分组。

代码语言:javascript
复制
(?:dev|www)  # group, but do not capture: 'dev' OR 'www'
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26330591

复制
相关文章

相似问题

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