Wir können jetzt mittels Regular Expressions nach Zeichen in einer Zeichenkette suchen, das macht aber aus Geschwindigkeitsgründen in der Regel keinen Sinn. Und irgendwie entspricht es auch nicht dem Konzept von Regular Expressions, da ich ja eigentlich ein Textmuster erkennen möchte. In der Regel weiß ich zum Beispiel, in welchem Format eine E-Mail-Adresse aufgebaut ist, aber nicht welche sie enthält.
Aus diesem Grund kann man in den Regular Expressions nicht nur nach einem bestimmten Zeichen suchen, sondern auch nach Zeichen innerhalb einer bestimmten Bandbreite: so zum Beispiel „irgendeine Zahl“ oder auch „irgendein Buchstabe“. Innerhalb von Regular Expressions definiert man diese Suchen mit der eckigen Klammer [].
Die eckige Klammer ohne Zusätze definiert dabei genau ein Zeichen. Gibt man zum Beispiel ein [12] an darf im zu durchsuchenden Text an dieser Stelle eine 1 ODER eine 2 stehen. Vermutet man an der betreffenden Stelle „irgendeine Zahl“, dann wäre eine passende Angabe: [0123456789]. Da man zumindest beim ABC nicht alle 26 Buchstaben tippen möchte vereinfachen uns die Regular Expressions die Eingabe von Bereichen: [0123456789] kann auch als [0-9] angegeben werden.
Dies ist auch wichtig, da Regular Expressions Case Sensitive sind, ein A ist also etwas anderes als ein a – aus diesem Grund kann ich innerhalb der eckigen Klammern gleich mehrere Bereiche definieren. Ein [A-Z] würde nur Großbuchstaben finden, ein [a-zA-Z] hingegen alle Buchstaben. Da ich allerdings manchmal auch nach „allem außer“ Suchen möchte, kann die Angabe in den eckigen Klammern mittels eines Circumflex(^) auch negiert werden.
Eine Suche nach [^0-9] liefert zum Beispiel alles außer die Zahlen 0-9. Kommen wir wieder zurück zu unserem Beispiel:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC1; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Tablet PC 2.0)
Suche nach: in[du]
Findet Windows, aber nicht Win64
Suche nach: x[0-9A-Z]
Findet x64
Suche nach: [^A-M]in
Findet Windows und Win64
Im nächsten Teil des Tutorials wird es darum gehen zu definieren, an welcher Position innerhalb des zu durchsuchenden Strings man die einzelnen Zeichen erwartet.
[…] – Regular Expressions: Beliebiges Zeichen suchen, Position einer […]
Eine schöne Einführung! :)
Mach mal bitte so idiotensicher weiter. Dann verstehe sogar ich diese für mich immer noch kryptischen Zeichen! Oh was hab ich mich schon damit rumgeärgert, wenn ich auch nur ein Beispiel etwas ändern wollte. ;)