Reguläre Ausdrücke (REGEXP) - Grundlagen


. (Punkt) genau EIN beliebiges Zeichen. Es kann ein A oder ein 9 sein oder eine Leerstelle usw. Aber irgendein Zeichen muss kommen. Genau eines.
- (Minus) entweder als Bereich-Angabe, z.B. [A-Z] – ein Großbuchstabe A bis Z ODER wenn es am Anfang oder am Ende von REGEXP steht, dann einfach ein Minus (dasselbe wie \-):
Also [A-Z] heißt alle Großbuchstaben von A bis Z
und [-A-Z] heißt das Minuszeichen UND alle Großbuchstaben von A bis Z
und [A-Z\-] heißt genauso alle Großbuchstaben von A bis Z und Minuszeichen. Wenn das Minuszeichen nicht am Anfang steht, muss es mit \ markiert werden.
\ (backslash) Hebt die Metafunktionen von Metazeichen auf. Z.B. ich suche nach einem Punkt im String. Da der Punkt als solcher eine Metafunktion hat (ein Punkt ersetzt genau ein beliebiges Zeichen, egal, was es ist), würde eine Suche nach . alle möglichen Ergebnisse bringen. Wenn ich tatsächlich einen Punkt haben will, muss ich den Punkt als \. reinscheiben - dieses \ sagt dann: ich will nicht nach einem beliebigen Zeichen suchen (was ja der . ist), sondern ich will eben einen Punkt. Also \.
^ wenn es in eckigen Klammern ist, negiert es den Inhalt, z.B. [^d-z] heißt keine Kleinbuchstaben zwischen d und z
ansonsten Anfang einer Zeichenkette oder Zeilenanfang (also ^a heißt, dass am Anfang a stehen muss).
$ Ende einer Zeichenkette oder Zeilenende
z.B. bei "toller" trifft "r$" zu, ein "a$" jedoch nicht.
| Alternativen (=oder), z.B. [a-z]|[0-9] sucht nach einem Kleinbuchstaben (a-z) ODER einer Ziffer (0-9)
+ das Zeichen vor dem Plus muss min. einmal bis x-mal vorkommen, z.B. a+ für a, aa, aaa...
* das Zeichen vor dem Stern muss 0 bis x-mal vorkommen, z.B. a* steht für nichts (0 Vorkommen) bis aaaaaaaa.... x tausend mal
? das Zeichen vor dem ? muss 0 bis 1-mal vorkommen, "H..?se" findet 'Hase', aber auch 'Hirse'
{x,y} Häufigkeit des Vorkommens: x- bis y-mal, z.B. \d{2,4) heißt 2 bis 4 Ziffern, {2,} heißt mindestens 2 mal, {3} heißt genau 3 mal.
[] genau ein Zeichen, was zw. den Klamern ist, z.B. [abc] sucht nach Vorkommen von a, b oder c (also nicht den String "abc", sondern genau einen Buchstaben a oder b oder c. EIN Buchstaben ist gefragt.
() runde Klammern zur Zusammenfassung der Ausdrücke, z.B. ^(abc|xyz) heißt 'abc' oder 'xyz' am Anfang einer Zeichenkette (wie in der Mathematik (1+2) x 3)
\d genau eine Ziffer [0-9] (d wie digit)
\D ein Zeichen, das keine Ziffer ist, also [^\d]
\w genau ein Buchstabe, eine Ziffer oder der Unterstrich, also [a-zA-Z_0-9] (und evtl. weitere Buchstaben, z. B. Umlaute)
\W ein Zeichen, das weder Buchstabe noch Zahl noch Unterstrich ist, also [^\w]
\s Whitespace; meistens die Klasse der Steuerzeichen \f, \n, \r, \t und \v
\S ein Zeichen, das kein Whitespace ist [^\s]
\b leere Zeichenkette am Wortanfang oder am Wortende (erkennt Anfang eines Wortes) z.B. '\bdies oder das' findet 'dies oder das' aber nicht 'Paradies und das Weib'
\B leere Zeichenkette, die nicht den Anfang oder das Ende eines Wortes bildet
\< leere Zeichenkette am Wortanfang
\> leere Zeichenkette am Wortende
\n ein Zeilenumbruch (im Unix-Format)
\t Tabulator