【发布时间】:2011-08-15 22:48:20
【问题描述】:
PCRE 是否正确支持 unicode 字符串?
【问题讨论】:
-
Unicode 字符串是什么意思?
PCRE 是否正确支持 unicode 字符串?
【问题讨论】:
是的,确实如此(尽管可能还不是 Unicode 6)。来自man page:
PCRE 的当前实现与 Perl 5.12 大致对应,包括 UTF-8 编码字符串的端口和 Unicode 通用类别属性。但是,必须明确启用 UTF-8 和 Unicode 支持;它不是默认值。 Unicode 表对应于 Unicode 版本 5.2.0。
【讨论】:
完全支持cUnicode 5.1
【讨论】:
如果您的 PCRE 是在未启用 UTF-8 的情况下编译的,您可以通过在正则表达式的开头添加 (*UTF8) 来启用它。
例如:
> echo ‒ | grep -Po '[‒]'
分别匹配字符 ‒ 的 3 个 utf-8 代码中的每一个(即:3 行输出),而这个:
> echo ‒ | grep -Po '(*UTF8)[‒]'
有预期的结果,产生一行包含字符‒的输出。
(我使用的是 Ubuntu 12.04 的库存安装)
【讨论】: