正则表达总是得到它

时间:2017-02-03 15:57:07

标签: python regex python-3.5

我必须用一些文本解析一个字符串,并且可能是一个用空格分隔的url,例如:

Hello, World! https://example.com/123456
Hello, World!

我试过

^(.*)\s(https://example\.com/.+)?$

但是这会忽略url并将其与文本的其余部分一起放入。

如何更改它,以便它始终可以找到网址?

1 个答案:

答案 0 :(得分:1)

您的问题是.* 贪婪的第一个词,它将消耗所有输入,不留任何东西来匹配该URL。请改为使用不情愿的量词.*?

^(.*?)\s*(https://example\.com/.+)?$

我也将whitespace作为可选项,否则纯文本需要有尾随空格才能匹配,这是不正确的。

请参阅live demo