我使用正则表达式来查找句子中的单词。但是下面的代码中描述的问题出现了。 它在http://www.regexr.com/上运行良好 但python与非ascii变种不匹配
import re
#ascii
pat = u"(tes?ts?)"
ttt = re.finditer(pat, u"test and tets")
print ttt.next().start()
print ttt.next().start()
# this works fine
#russian
pat = u"(молоде?цы?)"
ttt = re.finditer(pat, u"молодец и молодцы")
print ttt.next().start()
print ttt.next().start()
# this does not match anything - throws iterator error
感谢您的帮助!谢谢 UPD:输出+追溯
0
9
Traceback (most recent call last):
File "<stdin>", line 10, in <module>
StopIteration
UPD2:将模式更改为此
pat = u"(молод[е]?ц[ы]?)"
ttt = re.finditer(pat, u"молодец и молодцы")
print ttt.next().start()
print ttt.next().start()
导致匹配第一个单词但没有第二个
18
Traceback (most recent call last):
File "<stdin>", line 11, in <module>
StopIteration
答案 0 :(得分:0)
您确定使用正确的编码保存文件吗?当我在文件顶部声明enconding时,Ubuntu上的Python 2.7.5+为我工作文件:
# -*- coding: utf-8 -*-
import re
#ascii
pat = u"(tes?ts?)"
ttt = re.finditer(pat, u"test and tets")
print(ttt.next().start())
print(ttt.next().start())
# 0, 9
#russian
pat = u"(молоде?цы?)"
ttt = re.finditer(pat, u"молодец и молодцы")
print(ttt.next().start())
print(ttt.next().start())
# 0, 10