Was passt der Ausdruck \ X in einer RegEx?

8

Nach Ссылка ,

  

Sie können \X die Unicode-Version des Punktes in Regex-Engines berücksichtigen, die einfaches ASCII verwenden.

Bedeutet dies, dass es irgendeinen möglichen Unicode -Code Punkt

entspricht?     
federicot 29.03.2012, 15:25
quelle

2 Antworten

6

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.

    
unwind 29.03.2012, 15:28
quelle
2

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 \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 zu

war %Vor%      

Das 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:

     
  1. Ende am Ende der Betreff-Zeichenfolge.

  2.   
  3. Beenden Sie nicht zwischen CR und LF; andernfalls nach irgendeinem Steuerzeichen enden.

  4.   
  5. 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.

  6.   
  7. Beenden Sie nicht vor dem Erweitern von Zeichen oder Abstandsmarken. Zeichen mit der Eigenschaft "mark" haben immer die "extend"   Graphembrucheigenschaft.

  8.   
  9. Beenden Sie nicht nach dem Voranstellen von Zeichen.

  10.   
  11. Andernfalls beenden Sie den Cluster.

  12.   
    
Qtax 29.03.2012 15:29
quelle

Tags und Links