匹配不同字母表中的字母
下面的示例在 Ruby 中給出,但是相同的匹配器應該以任何現代語言提供。
假設我們有字串 AℵNaïve
,由 Messy Artificial Intelligence 製作。它由字母組成,但通用\w
匹配器不匹配:
▶ "AℵNaïve"[/\w+/]
#⇒ "A"
將 Unicode 字母與組合標記匹配的正確方法是使用\X
指定字形叢集。但是,Ruby 有一個警告。Onigmo,Ruby 的正規表示式引擎,仍然使用字形叢集的舊定義 。它尚未更新為 Unicode 標準附件 29 中定義的擴充套件字形叢集 。
所以,對於 Ruby 我們可以有一個解決方法:\p{L}
幾乎可以做得很好,除了它在 i
上的組合變音符號上失敗:
▶ "AℵNaïve"[/\p{L}+/]
#⇒ "AℵNai"
通過在表示式中新增標記符號,我們可以最終匹配所有內容:
▶ "AℵNaïve"[/[\p{L}\p{M}]+/]
#⇒ "AℵNaïve"