Perl Unicode 羹调手册:禁用内建字符类中的 Unicode 感知
℞ 24: 禁用内建字符类中的 Unicode 感知
许多正则表达式教程都忽略了这样一个事实:内建字符类包括的不仅仅是 ASCII 字符。特别是像“单词字符” (\w
)、“单词边界” (\b
)、“空白” (\s
) 和“数字” (\d
) 这样的类都遵循 Unicode。
Perl 5.14 添加了 /a
正则表达式修饰符来禁用 \w
、\b
、\s
、\d
以及 POSIX 类在 Unicode 上的正确工作。这限制了这些类只能匹配 ASCII 字符。使用 re 命名空间来在词法作用域中限制这些字符类。
use v5.14;
use re "/a";
… 或者使用 /a
修饰符来影响单个正则表达式
my($num) = $str =~ /(\d+)/a;
您始终可以使用特定的非 Unicode 属性,例如 \p{ahex}
和 \p{POSIX_Digit}
。无论什么字符集修饰符(/d /u /l /a /aa
)生效,属性仍然正常工作。
上一页: ℞ 23: 获取字符类别
系列索引: 标准前言
标签
反馈
这篇文章有问题?请通过在 GitHub 上打开问题或拉取请求来帮助我们。