我正在尝试通过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
还有一个需要删除的尾随空格。有人可以用正确的正则表达式帮助我吗?
答案 0 :(得分:2)
您不需要在此处使用不情愿的量词(*?
)。使用:
(\S+)\s+(\S+)\s+(\S+)\s*
原始正则表达式的问题是.*?
和\s*
的组合,因为不情愿的表达式可以保持匹配,而\s*
不必匹配任何内容。