您正在使用re.match()
,而不是re.search()
。 re.match()
錨點開始。
使用re.search()
正常工作:
>>> local = u'Rua Engenheira Enedina Alves Marqu\xeas, 126 - Cajuru, Cajuru, Curitiba - PR'
>>> p = re.compile(ur'\d[ ]+?-(.*?)(?:,|-)')
>>> re.search(p, local)
<_sre.SRE_Match object at 0x104dde288>
>>> re.search(p, local).group()
u'6 - Cajuru,'
見Python的正則表達式HOWTO的match()
vs. search()
section:
的match()
功能如果RE在字符串開始處匹配,而search()
只掃描檢查通過字符串進行比賽。記住這個區別很重要。請記住,match()
只會報告將從0開始的成功匹配;如果比賽不會從零開始,match()
將不會報告。
請注意,您不必在此處調用模塊級別re.search()
;在p
編譯表達式有search()
方法太:
>>> p.search(local).group()
u'6 - Cajuru,'
你好,請thoose這兩個網站(pythex)看看[https://pythex.org/]和(pyregex)[HTTP:// WWW .pyregex.com /]。他們對你真的很有幫助! – VivienG 2014-10-17 14:25:14