Regular Expressions
UTF-8: письма, знаки, знаки препинания и т. Д.
Поиск…
Соответствующие буквы в разных алфавитах
Примеры, приведенные ниже, приведены в 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"