Die Beschreibung der Seite ist ziemlich gut:
\ X Entspricht einem einzelnen Unicode-Graphem, unabhängig davon, ob es als einzelner Codepunkt oder als Mehrfachcodepunkte mit Kombinationsmarken codiert ist. Ein Graphem ähnelt am ehesten dem Alltagskonzept eines "Charakters". \ X passt zu U + 0061 U + 0300, codiert als U + 00E0, ©, usw.
Also macht es Unicode-bewusst, dass es mehrere Codepunkte finden kann, wenn diese zu einem einzigen sichtbaren "Ding" (Graphem) kombiniert werden.
Weitere Informationen finden Sie auf der Wikipedia-Seite zum Kombinieren von Zeichen . Dort wird beispielsweise der oben erwähnte Codepunkt U + 0300 aufgeführt.
Von Perl Regex Handbuch :
Dies entspricht einem Unicode erweiterten Graphem-Cluster .
\X
stimmt ziemlich überein naja was für eine normale (Nicht-Unicode-Programmierer) Verwendung wäre a einzelnes Zeichen. Als ein Beispiel betrachte ein G mit einer Art von diakritisches Zeichen, wie ein Pfeil. Es gibt kein solches einzelnes Zeichen in Unicode, aber man kann mit einem G, gefolgt von einem Unicode, zusammengesetzt werden "KOMBINIERTE UPWARDS ARROW BELOW", und würde von angezeigt werden Unicode-fähige Software als wäre es ein einzelnes Zeichen.Mnemonic: eXtended Unicode-Zeichen.
Und von PCRE-Manpages (2012):
PCRE implementiert eine einfachere Version von \ X als Perl, die geändert wurde, damit \ X dem entspricht, was in Unicode als "erweiterter Graphem-Cluster" bezeichnet wird. Dies ist komplizierter als eine erweiterte Unicode-Sequenz was PCRE entspricht.
[...]
\ X eine erweiterte Unicode-Sequenz
[...]
Das \ X escape entspricht einer beliebigen Anzahl von Unicode-Zeichen, die eine erweiterte Unicode-Sequenz bilden. \ X entspricht
%Vor%Das heißt, es entspricht einem Zeichen ohne die Eigenschaft "mark" gefolgt von null oder mehr Zeichen mit der Eigenschaft "mark" und behandelt die Sequenz als eine Atomgruppe (siehe unten). Zeichen mit die "mark" -Eigenschaft sind in der Regel Akzente, die die beeinflussen Vorgängerzeichen. Keine von ihnen haben Codepoints weniger als 256, also in 8-Bit-Nicht-UTF-8-Modus \ X entspricht einem beliebigen Zeichen.
Beachten Sie, dass neuere Versionen von Perl \ X entsprechend geändert haben Unicode nennt einen "erweiterten Graphem-Cluster", der mehr hat komplizierte Definition.
Spätere Version der PCRE-Manpages (2015):
Erweiterte Graphem-Cluster
Der
war %Vor%\X
escape entspricht einer beliebigen Anzahl von Unicode-Zeichen ein "erweiterter Graphem-Cluster" und behandelt die Sequenz als atomar Gruppe (siehe unten). Bis einschließlich Release 8.31 wurde PCRE angepasst eine frühere, einfachere Definition, die äquivalent zuDas heißt, es entsprach einem Zeichen ohne die Eigenschaft "mark" gefolgt von null oder mehr Zeichen mit der Eigenschaft "mark". Zeichen mit der Eigenschaft "mark" haben normalerweise keinen Abstand Akzente, die das vorhergehende Zeichen beeinflussen.
Diese einfache Definition wurde in Unicode erweitert, um mehr zu enthalten Komplizierte Arten von zusammengesetzten Zeichen, indem jedes Zeichen a gegeben wird Graphem-Breaking-Eigenschaft und Erstellen von Regeln, die diese verwenden Eigenschaften zum Definieren der Grenzen von erweitertem Graphem Cluster. In Releases von PCRE später als 8.31 entspricht
\X
einem von diese Cluster.
\X
stimmt immer mit mindestens einem Zeichen überein. Dann entscheidet es, ob um zusätzliche Zeichen gemäß den folgenden Regeln hinzuzufügen für Beenden eines Clusters:
Ende am Ende der Betreff-Zeichenfolge.
Beenden Sie nicht zwischen CR und LF; andernfalls nach irgendeinem Steuerzeichen enden.
Zerbrechen Sie nicht die Silbenfolgen Hangul (ein koreanisches Skript). Hangul-Zeichen sind von fünf Typen: L, V, T, LV und LVT. Ein L Zeichen kann ein L-, V-, LV- oder LVT-Zeichen folgen; ein LV oder Auf ein V-Zeichen kann ein V- oder T-Zeichen folgen; ein LVT oder T Zeichen kann nur durch ein T-Zeichen gefolgt werden.
Beenden Sie nicht vor dem Erweitern von Zeichen oder Abstandsmarken. Zeichen mit der Eigenschaft "mark" haben immer die "extend" Graphembrucheigenschaft.
Beenden Sie nicht nach dem Voranstellen von Zeichen.
Andernfalls beenden Sie den Cluster.