Benutzer:PerfektesChaos/js/WikiSyntaxTextMod/usage/replace/regexp

aus Wikipedia, der freien Enzyklopädie

WikiSyntaxTextModBenutzungErsetzungenRegExp

Reguläre Ausdrücke

Die Regulären Ausdrücke (RegExp) geben an, wonach gesucht werden soll.

Der RegExp ist außerdem Grundlage für die Ersetzung. Mit Klammerausdrücken lässt sich darin vereinbaren, dass nur bestimmte Teile ersetzt werden sollen.

Ausführliche Beschreibungen sind im Wikipedia-Artikel und den dort angeführten Weblinks verfügbar.

Für Insider: Es muss das String-Format (source) benutzt werden, Literale (/Literal/) funktionieren nicht.

Kurzfassung zu den wichtigsten Syntaxelementen
String Bedeutung
F Buchstabe „F“
. (Punkt) Beliebiges Zeichen außer Zeilenumbruch
[] Zeichenbereich(e); Beispiele:
[12ab] eines von "1", "2", "a", "b"
[a-z] ein beliebiger Kleinbuchstabe
[a-z_A-Z] ein Buchstabe oder Unterstreichungsstrich
[-a-zA-Z.0-9] ein Zeichen, das in einer klassischen Internet-Domain auftritt; der Bindestrich muss an erster Stelle aufgeführt werden
[^] Negation des Zeichenbereichs
() Inhalt der Klammer gehört zusammen, beispielsweise um Wiederholung oder Ersetzung zu definieren
A|B Einheit A oder Einheit B
Einheit ist das kleinste Element, dass sich bilden lässt, also ein Zeichen oder eine [] oder eine ().
Aneinanderreihung gleicher oder gleichartiger Zeichen/Klammern:
Operator wird dem Zeichen oder der Klammer unmittelbar nachgestellt
* Zeichen oder Klammer gar nicht oder beliebig oft
? Zeichen oder Klammer gar nicht oder genau einmal
+ Zeichen oder Klammer mindestens einmal oder beliebig oft
Sonderzeichen in der Zeichenkette:
\n Zeilenumbruch
\" Anführungszeichen
\\ einzelner backslash, "\" in der Wirkung
Syntaxelemente als einzelnes Zeichen:
backslash "\" als Fluchtsymbol; da ein einzelner backslash durch die Zeichenkette (String) „konsumiert“ wird, muss er doppelt angegeben werden
\\. Einzelnes Zeichen „Punkt“
\\[ Einzelnes Zeichen "[" (kein Zeichenbereich)
\\] Einzelnes Zeichen "]" (narrensicher)
\\(
\\)
Einzelne Zeichen, kein Klammerausdruck
\\*
\\?
\\+
Einzelnes Zeichen
  Innerhalb der Zeichenbereiche [] werden diese Sonderzeichen einfach angegeben, ohne backslash.
"]" kann gar nicht ohne Weiteres in Zeichenbereichen angegeben werden.
Spezialbedeutungen:
\\b Wortgrenze (weder Buchstabe noch Ziffer an dieser Stelle)

Englischsprachige Übersicht:

Traditionelle Syntax

Die Regulären Ausdrücke sind über die Jahrzehnte in unterschiedlichen Dialekten vereinbart worden. Hier wäre der Standard anzusetzen, der in JavaScript 1.3 oder 1.5 definiert wurde – vollständig: ecma-international.org, PDF 252 Seiten.

Die Erfahrung mit Dutzenden von Versionen verschiedener Browser zeigt jedoch, dass nicht immer jeder Browser alle Syntaxelemente konform implementiert hat.

Wer seinen eigenen Regulären Ausdruck schreibt und damit in seinem Browser glücklich wird, kann gern „moderne“ Erweiterungen nutzen.

Ich muss jedoch auf mir völlig unbekannte Browser Rücksicht nehmen und verwende daher im automatischen Skript und in den Beispielen benutzerdefinierter Ersetzungen eine etwas antiquierte, rund 30 Jahre alte Syntax (POSIX). Trotzdem musste ich noch Überraschungen mit dem IE7 erleben.

Beispiel:

"[0-9]"

ist gleichbedeutend mit dem modernen

"\\d"

Die erste Variante ist aber auch leichter zu verstehen, wenn man mit den Regulären Ausdrücken noch nicht per du ist.

Der Zeilenumbruch "\n" wirkt prinzipiell wie das Zeichen für Zeilenbeginn "^" (ausgenommen beim ersten Zeichen des Artikels), aber manche Browser haben heute noch Schwierigkeiten mit aus mehreren Zeilen bestehenden Zeichenketten, wie es unsere Wikipedia-Artikel nun einmal sind.

Beim Umsteigen aus anderen Sprachen muss beachtet werden, dass JavaScript beispielsweise Klammern und ihr Escaping anders behandelt als etwa LISP oder einige unixoide Shell-Skripte.