Regular Expressions
UTF-8-matchers: letters, tekens, leestekens enz.
Zoeken…
Overeenkomende letters in verschillende alfabetten
De onderstaande voorbeelden worden gegeven in Ruby, maar dezelfde matchers moeten beschikbaar zijn in elke moderne taal.
Laten we zeggen dat we de string "AℵNaïve"
, geproduceerd door Messy Artificial Intelligence. Het bestaat uit letters, maar generieke \w
matcher zal niet veel overeen:
▶ "AℵNaïve"[/\w+/]
#⇒ "A"
De juiste manier om Unicode-letters aan combinatietekens te koppelen, is door \X
te gebruiken om een grapheme-cluster op te geven. Er is echter een voorbehoud voor Ruby. Onigmo, de regex-engine voor Ruby, gebruikt nog steeds de oude definitie van een grapheme-cluster . Het is nog niet bijgewerkt naar Extended Grapheme Cluster zoals gedefinieerd in Unicode Standard Annex 29 .
Dus voor Ruby zouden we een oplossing kunnen hebben: \p{L}
zal het bijna prima doen, behalve dat het faalt op een gecombineerd diakritisch accent op i
:
▶ "AℵNaïve"[/\p{L}+/]
#⇒ "AℵNai"
Door de "Markeringssymbolen" aan de uitdrukking toe te voegen, kunnen we eindelijk alles matchen:
▶ "AℵNaïve"[/[\p{L}\p{M}]+/]
#⇒ "AℵNaïve"