我尝试使用模式"(c,c,c)"解析Python3和re模块字符串,其中c是要在(a,b,ë,?)中选择的一个字符。我写了这样的东西:
src="(a,b,ɪ̈)"
pattern = "[abëɪ̈]"
for r in re.finditer( '({0},{0},{0})'.format(pattern), src ):
print( r.group() )
但是正则表达式不适用于;Python分析由两个字符(+diairesis)、id和变音符号组成:正则表达式不知道如何读取"(a,b,)"。我对ë没有同样的问题;Python将ë分析为一个字符,我的正则表达式能够读取"(a,b,ë)",给出预期的答案。由于unicodedata.normalize('NFD',…)应用于src和pattern,我尝试使用normalize方法,但没有成功。
我该如何解决这个问题?如果能帮助我就太好了!
附言:由于蟒蛇,我修复了一些拼写错误。
您可以使用|
来解决它:
#!/usr/bin/env python3
import re
print(re.findall(r'({0},{0},{0})'.format("(?:[abë]|ɪ̈)"), "(a,b,ɪ̈)"))
# -> ['(a,b,ɪ̈)']
以上将ɪ̈
视为两个字符:
re.compile(r'[abë]|ɪ̈', re.DEBUG)
输出:
branch
in
literal 97
literal 98
literal 235
or
literal 618
literal 776