我尝试使用模式“(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 estɪ加一个变音符号:正则表达式不知道如何阅读“(a,b,ɪ̈)”。 ë;我有同样的问题; Python分析ë作为一个字符,我的正则表达式能够读取“(a,b,ë)”,给出预期的答案。 由于unicodedata.normalize('NFD',...)应用于 src 和 pattern ,我尝试使用规范化方法,但未成功。
我该如何解决这个问题?能帮到我真好!
PS:由于 pythonm ,我修正了一些拼写错误。
答案 0 :(得分:3)
您可以使用|
来解决问题:
#!/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