我正在使用很棒的 regex模块,尝试其 \X
字素支持。
首先,我尝试使用普通的旧 。
>>> print regex.match('.', 'Ä').group(0)
>>> print regex.match('..', 'Ä').group(0)
Ä
一切如期而至。移至 \X
>>> print regex.match('\X', 'Ä').group(0)
>>> print regex.match('\X\X', 'Ä').group(0)
Ä
为什么和.
一样呢?一个 \X
不应该足以捕获 A-umlaut 吗?是吗:
- 我对字素或
\X
含义的理解有误吗? - 我需要先打开一些标志/开关? (我已经搜索了文档,找不到)
- 我的环境有问题吗? (Python 2.7.3,pip 报告 regex==2014.12.24)
- 图书馆有问题?
- 还有别的吗?
最佳答案
它通过将 Ä
定义为 unicode 字符来工作。
>>> print regex.match('.', u'Ä').group()
Ä
>>> print regex.match('\X', u'Ä').group()
Ä
Python 2 和 Python 3 之间的主要区别在于处理文本和字节的基本类型。在 Python 3 上,我们有一种文本类型:str
,它包含 Unicode 数据和两种字节类型 bytes 和 bytearray。
另一方面,在 Python 2 上,我们有两种文本类型:str
,出于所有意图和目的,它仅限于 ASCII + 7 位范围以上的一些未定义数据,unicode 相当于Python 3继承自Python 3的str类型和单字节类型bytearray。
引用 - https://docs.python.org/2/howto/unicode.html#python-2-x-s-unicode-support
关于python - python 正则表达式中的字素支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28249162/