Regular Expression/Verknüpfungen

Aus Foxwiki

Verknüpfungen

Verknüpfung regulärer Ausdrücken

Mehrere reguläre Ausdrücke können durch Aneinanderfügen zusammengeführt werden. Ein solcher Ausdruck findet dann alle Zeichenketten, die aneinander gehängt zu dem jeweiligen Ausdruck passen.

Beispiel

"[Aa]lpha"

Es besteht aus den einzelnen Bausteinen

  • "[Aa]"
  • "l"
  • "p"
  • "h"
  • "a"

Verknüpfung durch "oder"

Durch den Operator "|" lassen sich reguläre Ausdrücke mit einem "oder" verknüpfen.

Der daraus entstehende Ausdruck findet Zeichenketten, die entweder auf den einen oder den anderen Ausdruck passen.

Beispiel

"[Aa]lpha|[Bb]ravo"

  • findet alle Textstücke "Alpha", "alpha", "Bravo" und "bravo"
  • grep -E oder egrep
echo "--rot--gelb--" | sed 's/\(gelb\|rot\)/x/g'
echo "--rot--gelb--" | sed 's/gelb\|rot/x/g'
  • die runden Klammern und das oder-Zeichen "|" müssen escaped werden
  • die runden Klammern können weggelassen werden

Alternativen

Man kann alternative Ausdrücke mit dem „|“-Symbol zulassen.

„ABC|abc“ bedeutet „ABC“ oder „abc“, aber z. B.  nicht „Abc“.

Beispiele

a|b* * "a", "b", "bb", "bbb", …
(a|b)*
  • beliebig viele „a“ und „b“, einschließlich einer leeren Zeichenkette
  • „“, „a“, „b“, „aa“, „ab“, „ba“, „bb“, „aaa“, …
ab*(c|ε)
  • ε = leer
  • Zeichenketten beginnend mit „a“
  • kein- oder mehrmals „b“
  • optional a "c": {"a", "ac", "ab", "abc", "abb", "abbc", ...}

(0|(1(01*0)*1))*

  • set of binary numbers that are multiples of 3: { ε, "0", "00", "11", "000", "011", "110", "0000", "0011", "0110", "1001", "1100", "1111", "00000", ... }

Rangfolge

Rangfolge der Regeln

Ähnlich wie bei mathematischen Ausdrücken (Punkt- vor Strichrechnung) unterliegen die Verknüpfungsoperatoren einer Rangfolge:

  • Wiederholungen kommen vor Verkettungen
  • Verkettungen vor "oder"
  • Diese Regeln lassen sich durch Klammern überschreiben