如何将管道运算符用作正则表达式的一部分?

时间:2011-04-24 21:51:28

标签: python regex

我希望匹配字符串中的网址,例如

u1 = "Check this out http://www.cnn.com/stuff lol"
u2 = "see http://www.cnn.com/stuff2"
u3 = "http://www.espn.com/stuff3 is interesting"

类似下面的作品,但它很麻烦,因为我必须重复整个模式

re.findall("[^ ]*.cnn.[^ ]*|[^ ]*.espn.[^ ]*", u1)

特别是,在我的真实代码中,我希望匹配更多的网站。理想情况下,我可以做类似于

的事情
re.findall("[^ ]*.cnn|espn.[^ ]*", u1)

但当然它现在不起作用,因为我没有正确指定网站名称。怎么能做得更好?感谢。

1 个答案:

答案 0 :(得分:6)

非分组匹配。

re.findall("[^ ]*.(?:cnn|espn).[^ ]*", u1)