我在IPython中测试它.该变量t
是从字典中的文本设置并返回:
u'http://www.amazon.com/dp/B003T0G9GM/ref=wl_it_dp_v_nS_ttl/177-5611794-0982247?_encoding=UTF8&colid=SBGZJRGMR8TA&coliid=I205LCXDIRSLL3'
使用此代码:
r = r'amazon\.com/dp/(\w{10})' m = re.findall(r,t)
匹配正确并m
返回[u'B003T0G9GM']
使用此代码,
p = re.compile(r) m = p.match(t)
m
回报 None
阅读本文档后,这对我来说是正确的. https://docs.python.org/2/howto/regex.html#grouping
在IPython中试用之前我也在这里测试了验证正则表达式 http://regex101.com/r/gG8eQ2/1
我错过了什么?
应该使用搜索,而不是匹配.这是你应该拥有的:
p = re.compile(r) m = p.search(t) if m: print(m.group(1)) # gives: B003T0G9GM
匹配只检查字符串的开头.搜索遍及整个字符串.