Wermescher Advisory Logo

regex – Cheat Sheet

Inhaltsverzeichnis

Sowohl in Shell Skripts, grep, sed und awk als auch in Programmiersprachen wie JAVA, Python oder PHP werden oft Regular Expressions (regex) genutzt.

Im Folgenden ein paar Beispiele

Bash Skripts

if [[ $digit =~ [0-9] ]]; then
    echo "$digit ist eine Ziffer"
else
    echo "$digit ist keine Ziffer"
fi

[0-9] bedeutet hier genau eine Ziffer zwischen 0 und 9.

Der Ausdruck ^[A-Z]+$ würde dagegen auf eine Zeichenfolge passen, die nur Großbuchstaben enthält. Dabei bedeuten die Zeichen ^$ und + folgendes:

  • ^ ist der Anfang einer Zeichenfolge,
  • $ markiert das Ende einer Zeichenfolge und
  • + mehr vom Gleichen (in diesem Fall EIN ODER MEHRERE GROSSBUCHSTABEN)

Der Ausdruck ^[A-Za-z0-9._%+-]+ würde natürlich eine Zeichenfolge aus Großbuchstaben, Kleinbuchstaben, Ziffern, .%+- bedeuten.

Beim Ausdruck ^[A-Z]{1,3}$ habe ich nun den + Quantifyer (1 oder mehrere) ersetzt, damit entweder 1, 2 oder 3 Grossbuchstaben erlaubt sind.

PHP

if(preg_match('/[A-Za-z0-9]+/', $str)) {
    // ...
}

Der Unterschied zu Bash ist hier, dass die / – Zeichen den Anfang und das Ende bezeichnen. Mit dem Backslash als „Escape Zeichen“ kann man auch nach einem / suchen. e.g. /[A-Z\/]+/ Hier suchen wir nach einem oder mehreren A-Z bzw. /

JAVA

Finds HTML tag meta with http-equiv returns the whole tag

Pattern metaPattern = Pattern.compile("<meta.*?http-equiv=\"refresh\".*?content=\".*?\".*?>",Pattern.CASE_INSENSITIVE);

Matcher matcher = metaPattern.matcher(data);
String siteDescription = "";
while (matcher.find()) {
   siteDescription = matcher.group();
   System.out.println(siteDescription);
}

Finds HTML tag meta with http-equiv returns only the content of the group (in ()brackets)

Pattern metaPattern = Pattern.compile("<meta.*?http-equiv=\"refresh\".*?content=\"(.*?)\".*?>",Pattern.CASE_INSENSITIVE);

Matcher matcher = metaPattern.matcher(data);
String siteDescription = "";
while (matcher.find()) {
   siteDescription = matcher.group(1);
   System.out.println(siteDescription);
}

Grep

Mittels grep kann man die Inhalte von Dateien durchsuchen. Das geht einfach mittels grep PATTERN DATEI

grep 'St..tsoper' datei.txt

Um zum Beispiel auf alles zu passen, was mit „St“ beginnt, dann zwei Zeichen hat und mit der Zeichenfolge „tsoper“ endet.

grep '[tv]oll' datei.txt

In diesem Beispiel definieren wir den Bereich (entweder t oder v). Somit trifft dieses Pattern auf toll und voll zu.

grep '^#' datei.txt

In diesem Beispiel MUSS die Zeile (aufgrund des Anchors ^) mit einem # starten.

Gruppen und Bereiche

.Beliebiges Zeichen außer New line (\n)
(a|b)a oder b
(…)Gruppe
[abc]Bereich (a oder b oder c)
[^abc]Nicht (a oder b oder c)
[a-d]Kleinbuchstaben zwischen a und d
[A-D]Groqbuchstaben A to D
[0-3]Ziffer zwischen 0 und 3

Spezialzeichen

\nNew line
\rCarriage return
\tTab
\vVertical tab
\fForm feed
\xxxOctal character xxx
\xhhHex character hh

Quantifier

*0 or more{3}Exactly 3
+1 or more{3,}3 or more
?0 or 1{3,5}3, 4 or 5

Anchors

^Start of string, or start of line in multi-line pattern
$End of string, or end of line in multi-line pattern
Teilen:
Weitere Posts
Windows Core Prozesse verstehen

SMSS.EXE Die Aufgabe des SMSS.exe-Prozesses ist es, neue Sitzungen zu erstellen. Zuerst werden Session 0 und Session 1 erstellt, sobald das Betriebssystem startet. Sitzung 0

Ubuntu LTS Release Update

Erzeuge einen Snapshot auf Contabo Einloggen auf: https://my.contabo.com/account/login Klick auf Ihre Dienste und suche nach der korrekten IP Adresse Klick auf Verwalten – Steuerung Erzeuge

Wie sichere ich meinen SSH-Server unter Linux

Normalerweise wird SSH verwendet, um sicher auf Linux-Server zuzugreifen. Durch Benutzer manuell oder auch durch automatisierte Systeme wie Ansible. Die meisten Benutzer verwenden SSH-Verbindungen mit

Sende uns eine Nachricht