匹配不同字母表中的字母

下面的示例在 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"