Hat PCRE Unicode-Strings korrekt unterstützen?
Antworten
Zu viele Anzeigen?Ja, das ist der Fall (allerdings wahrscheinlich noch nicht in Unicode 6). Von der Manpage :
Die aktuelle Implementierung von PCRE entspricht in etwa Perl 5.12, einschließlich der Portierung für UTF-8 kodierte Strings und allgemeine Unicode-Kategorie-Eigenschaften. Die Unterstützung von UTF-8 und Unicode muss jedoch explizit aktiviert werden; sie ist nicht die Standardeinstellung. Die Unicode-Tabellen entsprechen der Unicode-Version 5.2.0.
Wenn Ihr PCRE ohne die Aktivierung von UTF-8 kompiliert wurde, können Sie es einschalten, indem Sie (*UTF8)
an den Anfang des regulären Ausdrucks.
Zum Beispiel:
> echo | grep -Po '[]'
entspricht jedem der 3 utf-8-Codes des Zeichens einzeln (d.h. 3 Ausgabezeilen), während dies:
> echo | grep -Po '(*UTF8)[]'
hat das erwartete Ergebnis: eine Ausgabezeile mit dem Zeichen .
(Ich verwende eine Standardinstallation von Ubuntu 12.04)