Regular Expressions
UTF-8-Matcher: Buchstaben, Marken, Interpunktion usw.
Suche…
Übereinstimmende Buchstaben in verschiedenen Alphabeten
Die nachstehenden Beispiele sind in Ruby angegeben, jedoch sollten in jeder modernen Sprache dieselben Matcher verfügbar sein.
Nehmen wir an, wir haben die Zeichenfolge "AℵNaïve"
, produziert von Messy Artificial Intelligence. Es besteht aus Buchstaben, aber der generische \w
Matcher passt nicht besonders gut zusammen:
▶ "AℵNaïve"[/\w+/]
#⇒ "A"
Der richtige Weg, Unicode-Buchstaben mit Kombinationsmarken abzugleichen, ist die Verwendung von \X
zur Angabe eines Graphem-Clusters. Es gibt jedoch einen Vorbehalt für Ruby. Onigmo, die Regex-Engine für Ruby, verwendet immer noch die alte Definition eines Graphem-Clusters . Es ist noch nicht auf Extended Grapheme Cluster gemäß der Definition in Unicode Standard Anhang 29 aktualisiert.
Für Ruby könnte es also zu einer Problemumgehung kommen: \p{L}
wird fast alles gut machen, es sei denn, der kombinierte diakritische Akzent bei i
schlägt fehl
▶ "AℵNaïve"[/\p{L}+/]
#⇒ "AℵNai"
Durch das Hinzufügen der Markierungssymbole zum Ausdruck können wir schließlich alles abgleichen:
▶ "AℵNaïve"[/[\p{L}\p{M}]+/]
#⇒ "AℵNaïve"