我想从字符串query = regionID%3D4699183& c = 1中提取数字4699183,但它不起作用:
>>> import re
>>> string = 'query=regionID%3D4699183&c=1'
>>> string = re.sub("^(regionID%3D\d+)", "", string)
>>> string
'query=regionID%3D4699183&c=1'
我该怎么做?
答案 0 :(得分:2)
^(regionID%3D\d+)
在字符串的开头匹配regionID%3D\d+
,这不是您提供的实际字符串中的位置。即使它按照你的预期工作,你也只是删除整个东西,这显然不是你想要的。
请改为尝试:
>>> import re
>>> s = 'query=regionID%3D4699183&c=1'
>>> m = re.search(r'regionID%3D(\d+)', s)
>>> m.group(1)
'4699183'
这使用一个捕获组来匹配字符串中regionID%3D
之后的一个或多个数字(贪婪)。
答案 1 :(得分:1)
当您的输入以region
开头时,您要求以query
开头的匹配项。试试这个:
string = re.sub("^.*regionID%3D(\d+).*", r'\1', string)
也可以在不使用正则表达式的情况下执行此操作,但如果您要测试其他类型的字符串,则此方法可能会失败:
string = string.split('%3D')[1].split('&')[0]
或者您可以按照Cairnarvon的建议使用re.seach
。