2012-03-29 14 views

Odpowiedz

6

opis witryny jest bardzo dobre: ​​

\ X zestawienia pojedynczej grafem Unicode, czy zakodowany jako pojedynczy punkt kodowy lub wielu punktach kod za pomocą łączących śladów. Grafem najbardziej przypomina codzienną koncepcję "postaci". \ X odpowiada zakodowany jako U + 0061 U + 0300, à zakodowany jako U + 00E0, © itd

więc rzeczą, która sprawia, że ​​Unicode jest świadomy, że może dopasować kilka punktów kodowych kiedy te łączą się w jedną widoczną "rzecz" (grapheme).

Patrz Wikipedia's page on Combining Characters więcej szczegółów, to można znaleźć u + 0300 kodowy wspomniano powyżej, na przykład.

2

Od Perl regex manual:

Dopasowuje Unicode rozszerzony grafem klaster.

\X pasuje dość dobrze, jaki normalny (nie-Unicode-programista) użycie będzie uważał za pojedynczy znak . Jako przykład rozważ G z pewnego rodzaju znakiem diakrytycznym, takim jak strzałka. Nie ma takiego pojedynczego znaku w standardzie Unicode, ale można go skomponować za pomocą G, a następnie Unicode "POŁĄCZENIE DO PĘKNIĘĆ DO PŁYT W GÓRĘ PONIŻEJ" i byłoby wyświetlane przez oprogramowanie obsługujące Unicode, jak gdyby było to pojedyncze znaki.

Mnemonik: eXtended znak Unicode.

I od PCRE man pages (2012):

PCRE implementuje prostszą wersję \ X niż Perl, które zmieniły się, aby \ X mecz, co nazywa się "Unicode rozszerzony grafem klaster". Jest to bardziej skomplikowane niż rozszerzona sekwencja Unicode, którą jest co PCRE pasuje.

[...]

\ X rozszerzony ciąg Unicode

[...]

Polecenie \ X ucieczka dopasowuje dowolną liczbę znaków Unicode, które tworzą rozszerzony Sekwencja Unicode.\ X jest równoważne

(?>\PM\pM*) 

Oznacza to, że pasuje do charakteru bez „znaku” własności, następuje zero lub więcej znaków z „znak” własności i traktuje sekwencję jak grupa Atomowej (patrz poniżej). Znaki z właściwością "znacznik" są zwykle akcentami, które wpływają na poprzedni znak . Żaden z nich nie ma punktów kodowych mniejszych niż 256, więc w trybie 8-bitowy tryb inny niż UTF-8 \ X pasuje do dowolnego znaku.

Należy zauważyć, że ostatnie wersje Perla zmieniły \ X, aby odpowiadać temu, co nazywa Unicode "rozszerzonym klastrem grafem", który ma bardziej skomplikowaną definicję niż .

nowszej wersji PCRE man pages (2015):

Rozszerzone grafem klastry

\X ucieczka dopasowuje dowolną liczbę znaków Unicode, które tworzą "rozszerzone grafem klaster", i traktuje sekwencję jako grupa atomowa (patrz poniżej). Włącznie wydaniu 8.31, PCRE dopasowane była mowa wcześniej, że była prostsza definicja równoważna

(?>\PM\pM*) 

Oznacza to, że pasuje do charakteru bez „znaku” własności, następuje zero lub więcej znaków z właściwość "mark". Znaki z właściwością "znacznik" są zwykle nieprzylegające do spacji. Akcenty, które wpływają na poprzedni znak.

Ta prosta definicja została przedłużona w Unicode zawierać więcej skomplikowana rodzaje znaku złożonego dając każdemu charakterem grafem właściwości niszczące i tworzenie reguł, które używają tych właściwości zdefiniować granice udzielonych grafem klastrów. W wersjach PCRE późniejszych niż 8,31, \X pasuje jeden z tych klastrów.

\X zawsze dopasowuje co najmniej jeden znak. Następnie decyduje dodać dodatkowe znaki według następujących zasad kończących klastra:

  1. kończy się na końcu napisu.

  2. Nie należy kończyć między CR i LF; w przeciwnym razie kończy się po dowolnym znaku kontrolnym.

  3. Nie łam się sekwencji sylabowych Hangul (scenariusz koreański). Znaki Hangul mają pięć typów: L, V, T, LV i LVT. Po znaku L może wystąpić znak L, V, LV lub LVT; Po znaku V LV lub może następować znak V lub T; znak LVT lub T może być poprzedzony tylko znakiem T.

  4. Nie należy kończyć przed rozszerzeniem znaków lub znaków odstępu. Znaki z właściwością "mark" mają zawsze właściwość łamania grafiki "extend" .

  5. Nie kończą się po znakach poprzedzających.

  6. W przeciwnym razie zakończ klaster.

Powiązane problemy