Perl Unicode 美食大全:在正则表达式中匹配 Unicode 图形簇

℞ 29:在正则表达式中匹配 Unicode 图形簇

在 ASCII 时代,我们谈论的是字符和字节。它们之间的区别不大。在 Unicode 世界中,字符远不止七位数据。最好谈论原始字节和字符的集合——甚至 Unicode 码点。

程序员可见的“字符”是由 /./s 匹配的码点,但用户可见的“字符”是由 /\X/ 匹配的图形。

也就是说,正则表达式中的 \X 元字符匹配 Unicode 所称的“扩展图形簇”。在用户可能看到一个单独字符(如带重音的辅音)的地方,Unicode 的表示可能是该辅音加上组合字符加上重音符号。使用 \X 来匹配整个序列。

 # Find vowel *plus* any combining diacritics,underlining,etc.
 my $nfd = NFD($orig);
 $nfd =~ / (?=[aeiou]) \X /xi

上一篇:℞ 28:转换非 ASCII Unicode 数值

系列索引:标准序言

下一篇:℞ 30:用图形而不是码点提取(正则表达式)

标签

反馈

这篇文章有问题吗?请通过在 GitHub 上打开一个问题或拉取请求来帮助我们。