regex – Cheat Sheet
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 [0-9] bedeutet hier genau eine Ziffer zwischen 0 und 9. Der Ausdruck ^[A-Z]+$ würde dagegen auf eine Ze…
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
| \n | New line |
| \r | Carriage return |
| \t | Tab |
| \v | Vertical tab |
| \f | Form feed |
| \xxx | Octal character xxx |
| \xhh | Hex 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 |
Mehr aus „Linux, DevOps & Systeme"
Bash Strict Mode - robustere Shell-Skripte mit drei Zeilen
set -euo pipefail erklaert - warum diese drei Optionen Shell-Skripte deutlich verlaesslicher machen.
WeiterlesenZip, Unzip, Tar unter Linux – Kurz und bündig
Ordner komprimieren mittels zip Wechsle zunächst in das Verzeichnis über dem zu komprimierenden Ordner. Folgender Befehl komprimiert alle in dem Verzeichnis data sowie Unterverzeichnis enthaltenen Dateien: Parameters: Unzip 7zip Unter Ubuntu installieren Unter Windows installieren: Herunterladen…
WeiterlesenGoogle Gson in a nutshell
JsonObject vs JsonArray Create a JsonObject Create a JsonArray Iterate / Loop through all JsonObjects inside a JsonObject Iterate / Loop through all JsonElements inside a JsonArray Parse String into JsonObject Add a list of strings Parse from json file Get info from object Print out json Compact…
WeiterlesenÜber diesen Blog
Ein Sammelsurium an Denkanstößen.
Hier sammle ich Wissen, Argumente und Links zu allem, was mich beschäftigt — von Technik über Küche bis Nachhaltigkeit. Beruflich berate ich zu Cybersecurity.