Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
python_2 [2018/04/26 14:13] root [Regular Expressions] |
python_2 [2018/04/26 16:43] (aktuell) root [Regular Expressions] |
||
---|---|---|---|
Zeile 367: | Zeile 367: | ||
**Hinweis: | **Hinweis: | ||
+ | Special-Charakters, | ||
+ | ^Character ^Erklärung ^ | ||
+ | |.|Steht für beliebige Zeichen| | ||
+ | |*|Bedeutet das vorhergehende Zeichen 0 mal oder beliebig oft - das vorhergehende Zeichen kann also gar nicht oder beliebig oft nacheinander auftauchen. \\ \\ Häufig genutzt in der Kombination: | ||
+ | |+|Das vorhergehende Zeichen mindestens einmal, maximal beliebig oft.| | ||
+ | |? | ||
+ | |\S|Ein Zeichen was kein Leerzeichen ist - oder anders alles was kein Leerzeichen ist| | ||
+ | |[ ]|Steht für eine frei definierbare Gruppe von Zeichen. \\ \\ Grundsätzlich (ohne extra Zeichen dahinter) steht es für genau ein Zeichen aus dieser Gruppe. In Zusammenhang mit +, * usw. erhält es die Bedeutung als wäre es ein normales Zeichen gefolgt von dem Spezialzeichen, | ||
+ | Gruppendefinition: | ||
+ | * [A-Z] - der " | ||
+ | * [ACG] - definiert eine Liste von Zeichen | ||
+ | |||
+ | Die beiden Vorgehensweisen können gemischt werden: | ||
+ | * [A-Da-dF] - matched Zeichen A-D und a-d und F | ||
+ | |||
+ | **Hinweis: | ||
+ | </ | ||
+ | |[^ ]|Matcht alles außer die Zeichen die in der eckigen Klammer definiert sind - ist eine Umkehr| | ||
^Funktion ^Beschreibung ^ | ^Funktion ^Beschreibung ^ | ||
Zeile 376: | Zeile 394: | ||
</ | </ | ||
Oben stehendes Beispiel würde ein Objekt zurück geben, würde es nicht matchen würde es None zurück geben. | Oben stehendes Beispiel würde ein Objekt zurück geben, würde es nicht matchen würde es None zurück geben. | ||
- | </ | + | </ |
|re.findall|Liefert eine Liste mit Strings zurück auf die der regluläre Ausdruck zutraf. \\ < | |re.findall|Liefert eine Liste mit Strings zurück auf die der regluläre Ausdruck zutraf. \\ < | ||
< | < | ||
Zeile 383: | Zeile 401: | ||
</ | </ | ||
Das Ergebnis ist eine Liste mit 2 Elementen mit jeweils " | Das Ergebnis ist eine Liste mit 2 Elementen mit jeweils " | ||
- | </ | ||
- | |||
+ | **Beschränken des Rückgabe-Bereichs** | ||
+ | \\ | ||
+ | Es kann sein, dass man zwar auf einen bestimmten Bereich matchen will, aber nur einen Teilstring extrahieren (der nicht identisch ist mit dem Gesamtstring auf den man matcht). | ||
+ | \\ | ||
+ | Dazu kann man einen Teilausdruck in Klammern definieren, es wird dann zwar auf den gesamten regulären Ausdruck gematcht, aber nur das das Ergebnis des Ausdrucks in Klammern wird in den Ergebnissen berücksichtigt. \\ | ||
+ | < | ||
+ | import re | ||
+ | a=" | ||
+ | re.findall(" | ||
+ | </ | ||
+ | In obigem Beispiel ist die E-Mailadresse im From von Interesse. \\ | ||
+ | * ^\W*From: | ||
+ | * \S+ -> stellt sicher das nach dem Header mindestens ein Zeichen kommt was kein Leerzeichen ist | ||
+ | * () -> bedeutet das nur das Ergebnis des reguläre Ausdruck innerhalb der Klammern zurückgeliefert wird | ||
+ | In obigem Beispiel würde " | ||
+ | </ |