我想从以下文本中提取网址:
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)
的替换,并且因为使用了括号,它会创建一个我不想要的捕获组。
是否可以在不创建捕获组的情况下使用交替?
请注意,这与“类似问题”的问题不同:Can I use an OR in regex without capturing what's enclosed?
编辑:显然它实际上与上面的问题相同,我只是误解了?:
运算符的工作原理。
答案 0 :(得分:4)
是的,您想要使用Non-capturing组。通过在左括号后面立即放置?:
,您可以指定不要捕获该组,而只是简单地对表达式进行分组。
(?:dev|www) # group, but do not capture: 'dev' OR 'www'