正则表达式/

时间:2015-06-21 18:12:26

标签: python regex

我正在尝试通过Python re模块的正则表达式来匹配这两种模式:

"GET /images/launch-logo.gif HTTP/1.0"
"GET / HTTP/1.0 "

我尝试了以下表达式:

"(\S+) (\S.*?)\s*(\S*)"

这可以通过返回以下内容来实现:

1. GET
2. /images/launch-logo.gif
3. HTTP/1.0

然而,对于第二个它返回:

1. GET
2. / HTTP/1.0
3. ''

相反,我希望返回以下内容:

1. GET
2. / 
3. HTTP/1.0

还有一个需要删除的尾随空格。有人可以用正确的正则表达式帮助我吗?

1 个答案:

答案 0 :(得分:2)

您不需要在此处使用不情愿的量词(*?)。使用:

(\S+)\s+(\S+)\s+(\S+)\s*

原始正则表达式的问题是.*?\s*的组合,因为不情愿的表达式可以保持匹配,而\s*不必匹配任何内容。