我想从文本中提取URL,如下所示:
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我编写了以下正则表达式:
^(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?
编辑:显然这和上面的问题是一样的,我只是误解了?:运算符的工作原理。
发布于 2014-10-13 06:20:07
是的,您希望改用Non-capturing组。通过将?:紧跟在左括号之后,您可以指定不捕获该组,而只是对表达式进行分组。
(?:dev|www) # group, but do not capture: 'dev' OR 'www'https://stackoverflow.com/questions/26330591
复制相似问题