python - python 正则表达式中的字素支持

标签 python regex unicode grapheme

我正在使用很棒的 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/

相关文章:

python - 基于其他行的过去值到当前值的新行

python - 在 Debian 上使用 Python 编写 Bencode?

regex - perl 正则表达式,删除捕获的内容

python - 如何比较具有不同字节但值相同的 Unicode 字符串?

python - 具有唯一值的排列

python - 使用twistd运行高速公路应用程序

regex - 在 Python 中验证一组日期的方法

java - 匹配重复字符串部分时出现奇怪的 Java 正则表达式错误

php - 加泰罗尼亚语字符 à 和 è 不适用于 php imagestringup - 如何解码它们?

swift - 从任何 UTF-16 偏移量中,找到位于字符边界上的相应 String.Index