1

我尝试使用模式 "(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 est ɪ 加上一个变音符号:正则表达式不知道如何阅读“(a,b,ɪ̈)”。我对ë没有同样的问题;Python 将 ë 分析为一个字符,我的正则表达式能够读取“(a,b,ë)”,给出预期的答案。由于 unicodedata.normalize('NFD', ...) 应用于srcpattern ,我尝试使用规范化方法,但未成功。

我该如何解决这个问题?很高兴能帮助我!

PS:感谢pythonm ,我修正了一些错别字。

4

1 回答 1

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 
于 2012-09-04T16:44:36.090 回答