我想从字符串 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'
我该怎么做?
我想从字符串 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'
我该怎么做?
^(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
字符串中任意位置之后的一个或多个数字(贪婪地)。
您正在询问以 开头的匹配,region
而您的输入以 开头query
。尝试这个:
string = re.sub("^.*regionID%3D(\d+).*", r'\1', string)
也可以不使用正则表达式来执行此操作,但如果您有其他类型的字符串要测试,此方法可能会失败:
string = string.split('%3D')[1].split('&')[0]
或者您可以re.seach
按照 Cairnarvon 的建议使用。