Regular Expressions Cookbook, 2nd Edition by Jan Goyvaerts, Steven Levithan

Eingabe auf alphanumerische Zeichen in einer beliebigen Sprache beschränken

Dieser reguläre Ausdruck beschränkt die Eingabe auf Buchstaben und Zahlen einer beliebigen Sprache oder eines Skripts:

^+$

Regex-Optionen: None

Regex flavors: .NET, Java, XRegExp, PCRE, Perl, Ruby 1.9

Dieser Ausdruck verwendet eine Zeichenklasse, die Abkürzungen für alle Codepunkte in den Unicode-Kategorien Letter, Mark und Decimal Number enthält, was der offiziellen Unicode-Definition eines alphanumerischen Zeichens entspricht. Die Kategorie Zeichen ist enthalten, da Zeichen für Wörter in vielen Sprachen erforderlich sind. Marken sind Codepunkte, die mit anderen Zeichen kombiniert werden sollen (z. B. um eine akzentuierte Version eines Grundbuchstabens zu bilden).

Leider werden Unicode-Kategorien nicht von allen in diesem Buch behandelten Flavors für reguläre Ausdrücke unterstützt. Insbesondere funktioniert dieser Regex nicht mit JavaScript (es sei denn, Sie verwenden XRegExp), Python oder dem nativen Flavor von Ruby 1.8. Die Verwendung dieser Regex mit PCRE setzt voraus, dass PCRE mit UTF-8-Unterstützung kompiliert wurde, und Unicode-Kategorien können mit den preg-Funktionen von PHP (die auf PCRE basieren) verwendet werden, wenn die Option /u an die Regex angehängt wird.

Die folgende Regex zeigt einen Workaround für Python:

^+$

Regex-Optionen: Unicode

Regex flavors: Python

Hier umgehen wir das Fehlen von Unicode-Kategorien in Python, indem wir das UNICODE– oder U-Flag beim Erstellen des regulären Ausdrucks verwenden. Dies ändert die Bedeutung einiger Regex-Token, indem es sie dazu bringt, die Unicode-Zeichentabelle zu verwenden. \w‚ bringt uns dann den größten Teil des Weges zur Lösung, da er auf alphanumerische Zeichen und den Unterstrich passt. Durch die Verwendung seiner Umkehrung ‚\W‚ in einer negierten Zeichenklasse können wir den Unterstrich aus dieser Menge entfernen. Doppelte Negationen wie diese sind in regulären Ausdrücken gelegentlich recht nützlich, auch wenn sie schwer zu durchschauen sind. Python 3.x enthält standardmäßig Nicht-ASCII-Zeichen in Abkürzungen wie ‚\w‚ und benötigt daher das UNICODE-Flag nicht.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.