这是我的代码
>>> ll = 'window.DETAILS_PAGE_MAP_GLOBALS = {GOOGLE_MAPS_LONGITUDE: 55.2378015294,GOOGLE_MAPS_LATITUDE: 25.0463764816}'
>>> print(re.match('GOOGLE_MAPS_LATITUDE:\s*(\d+\.\d+)', ll))
None
我总是得到None
虽然我确信100%正则表达式是正确的。
答案 0 :(得分:1)
使用re.search()
,不 re.match()
;后者只匹配字符串开头的:
如果 string 开头的零个或多个字符与正则表达式模式匹配,则返回相应的
MatchObject
实例。
演示:
>>> import re
>>> ll = 'window.DETAILS_PAGE_MAP_GLOBALS = {GOOGLE_MAPS_LONGITUDE: 55.2378015294,GOOGLE_MAPS_LATITUDE: 25.0463764816}'
>>> re.match('GOOGLE_MAPS_LATITUDE:\s*(\d+\.\d+)', ll)
>>> re.search('GOOGLE_MAPS_LATITUDE:\s*(\d+\.\d+)', ll)
<_sre.SRE_Match object at 0x105525cd8>
>>> re.search('GOOGLE_MAPS_LATITUDE:\s*(\d+\.\d+)', ll).group(1)
'25.0463764816'
答案 1 :(得分:1)
您需要使用re.search()
代替re.match()
。第一个是查看字符串中任何位置的模式,另一个查看模式是否可以应用于字符串完全。
re.search(pattern, string, flags=0)
扫描字符串,查找正则表达式模式生成匹配项的位置,并返回相应的匹配对象。如果字符串中的位置与模式匹配,则返回
None
;请注意,这与在字符串中的某个点找到零长度匹配不同。
示例:
>>> print(re.search('GOOGLE_MAPS_LATITUDE:\s*(\d+\.\d+)', ll))
<_sre.SRE_Match object at 0xffecf260>
>>> print(re.search('GOOGLE_MAPS_LATITUDE:\s*(\d+\.\d+)', ll).groups())
('25.0463764816',)
>>> print(re.search('GOOGLE_MAPS_LATITUDE:\s*(\d+\.\d+)', ll).group(1))
25.0463764816