Klammern ()
werden verwendet, um Teile eines regulären Ausdrucks zu gruppieren. Dies ist nützlich, um Quantoren auf mehrere Zeichen anzuwenden und um übereinstimmenden Text zu erfassen.
Wenn Sie Klammern verwenden, speichert Bash den Text, der von diesem Teil des regulären Ausdrucks übereinstimmt, in einem speziellen Array namens BASH_REMATCH
. BASH_REMATCH[0]
enthält die gesamte übereinstimmende Zeichenkette, BASH_REMATCH[1]
enthält den Text, der von der ersten Gruppe übereinstimmt, BASH_REMATCH[2]
den von der zweiten Gruppe und so weiter.
Ändern wir unser regex_test.sh
-Skript, um Daten mit Erfassungsgruppen zu extrahieren. Öffnen Sie regex_test.sh
mit einem Texteditor und ersetzen Sie seinen Inhalt durch Folgendes:
#!/bin/bash
string="apple123"
if [[ "$string" =~ ^([a-z]+)([0-9]+)$ ]]; then
fruit="${BASH_REMATCH[1]}"
number="${BASH_REMATCH[2]}"
echo "Fruit: $fruit"
else
echo "No match."
fi
Speichern Sie die Datei und führen Sie sie aus:
./regex_test.sh
Die Ausgabe sollte "Fruit: apple" enthalten. Dieses Skript extrahiert den Fruchtnamen aus der Zeichenkette mithilfe von Erfassungsgruppen.