Python3中的regex如何处理变音符号



我尝试使用模式"(c,c,c)"解析Python3re模块字符串,其中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',…)应用于srcpattern,我尝试使用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 

最新更新