SelfLinux Programmierung Reguläre Ausdrücke Abschnitt 5 | SelfLinux-0.13.0

| Reguläre Ausdrücke | Autor Formatierung GFDL

#### 5 Ein paar Beispiele

Zum Abschluss noch ein paar Beispiele zum besseren Verständnis:

#### 5.1 Ab geht die Post

\<[0-9]{5}\>
Dieser Ausdruck sucht nach fünfstelligen Zahlen, wie zum Beispiel Postleitzahlen. [0-9] findet eine Ziffer zwischen 0 und 9. Durch die {5} dahinter muss etwas Derartiges fünfmal hintereinander gefunden werden. \< und \> sorgen schließlich dafür, dass um diese 5 Ziffern nichts herum stehen darf.

#### 5.2 Mail me!

[^\b]\@[^\b]
Dies ist ein simpler Ausdruck zum Aufspüren von E-Mail-Adressen. \b bedeutet Wortanfang oder -ende. Durch das ^ zu Beginn der eckigen Klammerung wird es verneint.
So wird von obigem Ausdruck alles gefunden, was aus einem @ besteht, das links und rechts von mindestens einem Wortzeichen umrahmt wird. (der \ vor dem @ ist übrigens nicht Pflicht, aber in vielen Programmen hat das @ eine Sonderbedeutung, und quoten schadet nicht)

#### 5.3 IP-Adressen

([0-9]{3}\.){3}[0-9]{3}
Hierbei handelt es sich um einen einfachen IP-Adressen-Finder. Er sucht dreistellige Zahlen, die durch drei Punkte getrennt sind. Zur Verbesserung wäre noch eine Begrenzung auf ein Wort per \< und \> möglich.

#### 5.4 Das IPerium schlägt zurück

\<(([01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.){3}([01]?[0-9]{1,2}|2[0-4][0-9]|25[0- 5])\>
Dieser doch schon recht komplexe IP-Finder ist eine ausgebaute Version des vorhergehenden Ausdrucks. Für eine schnelle Suche in Texten ist er natürlich viel zu lang. Er könnte vielleicht eher in einem Skript eingesetzt werden, um Benutzereingaben zu überprüfen.

Der Ausdruck lässt nämlich nur gültige IPv4-Adressen zu.
Ausnahme: 0.0.0.0 ist keine gültige IP-Adresse, wird aber trotzdem anerkannt.
Auch Sonderadressen (z.B. für Broadcasts) werden zunächst erkannt. Um dies zu verhindern kann der Ausdruck entsprechend angepasst werden.

Zum besseren Verständnis: Grundsätzlich ist der Ausdruck aufgebaut wie unser erster IP-Finder. Es wurden \< und \> ergänzt, damit beispielsweise ag1234.122.33.4.012sd9 nicht gefunden wird. Anschließend wurde das [0-9]{3} durch eine präzisere Variante ersetzt. Sie besteht aus drei Alternativen:

[01]?[0-9}{1,2} findet alle ein- und zweistelligen Zahlen und dreistellige, die mit 1 beginnen. Jeweils eingeschlossen sind auch die Entsprechungen mit führenden Nullen (auffüllend bis drei Stellen).

Es sind jetzt also alle Zahlen von 0 bis 199 abgedeckt. 2[0-4][0-9} findet alle Zahlen von 200 bis 249. 25[0-5] alle von 250 bis 255. Damit ist die Suche komplett.

#### 5.5 Emanzipierte Superfrauen

user@linux $ sed -e 's/\(Super\|Spider\|Bat\)man/\1woman/g' testdatei

Dieser Befehl ersetzt in testdatei alle Wörter wie Spiderman, Batman und Superman durch ihre weiblichen Pendants.

Hier wurde, da wir sed benutzten, auf BRE zurückgegriffen. Zur Erläuterung: Die Option -e dient dazu, sed ein Kommando zu übergeben. In diesem Falle handelt es sich um das Ersetzen-Kommando (gekennzeichnet durch das s zu Beginn).

Die / dienen dazu die einzelnen Angaben voneinander zu trennen. Auf den ersten trennenden / folgt der zu suchende Ausdruck \(Super\|Spider\|Bat\)man.

Hinter dem nächsten / ein Ausdruck, der klar macht, was an den Fundstellen einzusetzen ist: \1woman. \1 ist einen Rückbezug auf den Suchausdruck. Wenn beispielsweise 'Superman' ersetzt wird, wurde im Klammerpaar die Alternative 'Super' gefunden. Diese wird nun an die Stelle von \1 gesetzt, gefolgt von 'woman'. Also wird aus 'Superman' kurzerhand 'Superwoman'.

Das g am Ende sorgt übrigens dafür, dass die Ersetzungen global, also in der gesamten Datei, vorgenommen werden.