Eine Regular Expression (abgekürzt RegExp, oder RegEx) ist eine Zeichenkette, die eine Mengen von Zeichenketten mit Hilfe von syntaktischen Regeln beschreibt.
RegExp | Bedeutung |
---|---|
[abc] | eines der Zeichen a , b oder c |
[0-2] | eine Ziffer von 0 bis 2 |
[^a] | ein beliebiges Zeichen außer a |
RegExp | Bedeutung |
---|---|
[:cntrl:] | Steuerzeichen |
[:print:] | Druckbare Zeichen: [:alnum:] , [:punct:] und Leerzeichen |
[:space:] | Whitespace: Horizontaler und vertikaler Tabulator, Zeilen- und Seitenvorschub, Wagenrücklauf und Leerzeichen |
[:blank:] | Leerzeichen oder Tabulator |
[:graph:] | Graphische Zeichen: [:alnum:] oder [:punct:] |
[:punct:] | Satzzeichen wie: ! „ # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~ |
[:alnum:] | Alphanumerische Zeichen: [:alpha:] oder [:digit:] |
[:xdigit:] | Hexadezimale Ziffern: 0 bis 9 , A bis F , a bis f |
[:digit:] | Die Ziffern 0 bis 9 |
[:alpha:] | Buchstaben: [:lower:] oder [:upper:] |
[:lower:] | Kleinbuchstaben |
[:upper:] | Großbuchstaben |
Die POSIX-Zeichenklassen müssen innerhalb einer Zeichenauswahl []
stehen.
Beispiel: [[:alnum:]]
RegExp | Bedeutung |
---|---|
? | null- oder einmal |
+ | mindestens einmal (entspricht {1,} ) |
* | beliebig oft (auch keinmal) (entspricht {0,} ) |
{n} | exakt n-mal (entspricht {n,n} ) |
{min,} | mindestens min-mal |
{min,max} | mindestens min-mal, max-mal |
{0,max} | maximal max-mal |
RegExp | Bedeutung |
---|---|
. | beliebiges Zeichen |
\ | Escapezeichen |
^ | Zeilenanfang |
$ | Zeilen- oder Stringende |
RegExp | Bedeutung |
---|---|
\p{L} | beliebiges Unicodezeichen aus der Kategorie Buchstabe |
\P{L} | beliebiges Unicodezeichen, außer aus der Kategorie Buchstabe |
\p{n} | beliebige Unicodeziffer |
\P{n} | beliebiges Unicodezeichen, außer beliebige Unicodeziffer |
\uFFFF | Unicodezeichen mit dem Codepoint U+FFFF |
Dies sind nur die häufigsten RegExps für Unicode, für weitere Informationen siehe RegExps für Unicode.
RegExp | Bedeutung |
---|---|
() | Gruppe |
\n | Zugriff auf n-te Gruppe |
Die unterstützen Features unterscheiden sich je nach Implementierung/Sprache.
\uFFFF
sondern als \x{FFFF}
kodiert.Seit Version 7.3 nutzt PHP PCRE2 statt PCRE. Dies bringt eine strengere Prüfung der Pattern mit sich. Das sonstige Verhalten soll weitgehend identisch sein.
Python unterstützt die POSIX-Zeichenklassen wie [:alpha:]
oder [:alnum:]
nicht.
Dafür kennt Python special sequences:
special sequence | Bedeutung |
---|---|
\d | beliebige Ziffer [0-9] |
\D | beliebiges Zeichen, das keine Ziffer ist |
\w | beliebiges Zeichen aus [a-zA-Z0-9_] |
\W | beliebiges Zeichen, das nicht in [a-zA-Z0-9_] enthalten ist |
\s | beliebiges Leerzeichen |
\S | beliebiges Nicht-Leerzeichen |
procmail verwendet eine eigene Implementierung von regulären Ausdrücken. Sie unterstützt die Quantoren vom Typ {n,m}
nicht.
In sed müssen alle Quantoren außer *
escaped werden:
Quantor | Bedeutung |
---|---|
* | beliebig oft (auch keinmal) |
\+ | mindestens einmal, aber auch mehrfach |
\? | null oder einmal |
\{n\} | n-mal |
\{i,n\} | i bis n-mal |
Auch Gruppen ()
müssen escaped werden: \(\)
.
Beim Escaping muss beachtet werden, dass Ausdrücke, die in doppelten Anführungszeichen (“
) stehen, bereits von der Shell ausgewertet werden. Daher muss ggf. doppelt escaped werden.
Ausdrücke, die in einfachen Anführungszeichen (') werden von Shells wie bash dagegen nicht ausgewertet und daher auch nicht doppelt escaped werden.