无论我读了多少文档,我都很难掌握正则表达式。我正在尝试匹配一个字符串和第一次出现&
之间的所有内容这就是我所拥有的
link = "group.do?sys_id=69adb887157e450051e85118b6ff533c&&"
rex = re.compile("group\.do\?sys_id=(.?)&")
sysid = rex.search(link).groups()[0]
我正在使用https://regex101.com/#python来帮助我验证我的正则表达式,我可以让rex = re.compile("user_group.do?sys_id=(.*)&")
工作,但.*
是贪婪的,并且匹配到最后一个&我希望与第一个&
我认为.?
匹配0到1次
答案 0 :(得分:7)
你不一定需要正则表达式。请改用urlparse
:
Access-Control-Allow-Origin: *
如果Python 3将导入更改为:
>>> from urlparse import urlparse, parse_qs
>>> parse_qs(urlparse(link).query)['sys_id'][0]
'69adb887157e450051e85118b6ff533c'
答案 1 :(得分:2)
您可以简单地将{regex转到EXPLAIN
而不是最终的&
,如下所示:
&
答案 2 :(得分:2)
.*
贪婪但是
.*?
不应该在正则表达式中。
.?
只会在0-1次查找任何字符
.*?
将查找最早的匹配事件。我希望能够解释它。