Я тестирую это в IPython. Переменная t
создается из текста в словаре и возвращает:Python regex findall работает, но совпадение не
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
Что мне не хватает?
'match' соответствует началу строки, вам, вероятно, потребуется' search'. См. [В чем разница между re.search и re.match? Python?] (Http://stackoverflow.com/questions/180986/what-is-the-difference-between-pythons-re-search-and-re- совпадение). – alecxe