正则表达式 - 字符串和第一次出现之间的Python匹配

时间:2016-06-13 19:46:30

标签: python regex

无论我读了多少文档,我都很难掌握正则表达式。我正在尝试匹配一个字符串和第一次出现&之间的所有内容这就是我所拥有的

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次

3 个答案:

答案 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而不是最终的&amp,如下所示:

&

答案 2 :(得分:2)

.* 

贪婪但是

.*? 

不应该在正则表达式中。

.? 

只会在0-1次查找任何字符

.*? 

将查找最早的匹配事件。我希望能够解释它。