Поиск…


Соответствующие буквы в разных алфавитах

Примеры, приведенные ниже, приведены в Ruby, но такие же совпадения должны быть доступны на любом современном языке.

Скажем, у нас есть строка "AℵNaïve" , созданная Messy Artificial Intelligence. Он состоит из букв, но общий мануал \w не будет соответствовать многому:

▶ "AℵNaïve"[/\w+/]
#⇒ "A"

Правильный способ сопоставления букв Unicode с комбинированием меток заключается в использовании \X для указания кластера графем. Однако есть предостережение для Ruby. Onigmo, механизм регулярных выражений для Ruby, по-прежнему использует старое определение кластера графем . Он еще не обновлен до расширенного кластера Grapheme, как определено в стандарте Unicode Standard 29 .

Итак, для Ruby у нас может быть обходное решение: \p{L} будет делать почти отлично, за исключением того, что он не работает при комбинированном диакритическом акценте на i :

▶ "AℵNaïve"[/\p{L}+/]
#⇒ "AℵNai"

Добавив в выражение символы «Mark», мы можем, наконец, сопоставить все:

▶ "AℵNaïve"[/[\p{L}\p{M}]+/]
#⇒ "AℵNaïve"


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow