Seite 1 von 1

Frage zu re Ausdruck

Verfasst: Donnerstag 1. November 2007, 19:39
von Duff
Hallo,

ich habe eine Frage zu folgender Code-Zeile, die ich hier gefunden habe:

Code: Alles auswählen

links = re.findall('<a.*?href="((http|ftp)s?://.*?)".*?>(?uism)', html)
Wofür steht noch mal das (?uism)?

Danke.

Verfasst: Donnerstag 1. November 2007, 20:01
von BlackJack
Das steht für Flags. Und an der falschen Stelle, es sollte vorne stehen.

http://docs.python.org/lib/re-syntax.html

Verfasst: Donnerstag 1. November 2007, 21:20
von Duff
BlackJack hat geschrieben:Das steht für Flags. Und an der falschen Stelle, es sollte vorne stehen.

http://docs.python.org/lib/re-syntax.html
Ok,

ist das denn nun was python spezifisches?
Verstehe nämlich irgendwie nicht so genau, wofür das (?uism) nun steht.

Verfasst: Donnerstag 1. November 2007, 21:40
von rafael
Nein. Jeder Buchstabe ist ein Flag und hat seine eigene Bedeutung.

Verfasst: Donnerstag 1. November 2007, 21:47
von Duff
Danke.

Fehlt nur noch eine Erklärung für das u in (?uism).

Wenn ich das ganze richtig verstehe, unterscheiden sich die regulären Ausdrücke von python ein wenig zu den "allgemeinen", wie in perl z.B.

Verfasst: Donnerstag 1. November 2007, 22:07
von rafael
Duff hat geschrieben:Danke.

Fehlt nur noch eine Erklärung für das u in (?uism).

Wenn ich das ganze richtig verstehe, unterscheiden sich die regulären Ausdrücke von python ein wenig zu den "allgemeinen", wie in perl z.B.
Es steht für Unicode. ;)

Verfasst: Freitag 2. November 2007, 00:49
von BlackJack
Duff hat geschrieben:Wenn ich das ganze richtig verstehe, unterscheiden sich die regulären Ausdrücke von python ein wenig zu den "allgemeinen", wie in perl z.B.
Da könnte man genausogut sagen die regulären Ausdrücke von Perl unterscheiden sich von den "allgemeinen" wie in Python zum Beispiel. Oder in sed, oder awk, oder Java, oder… Ausser in den wirklich grundlegenden Sachen unterscheiden die sich alle ein kleines bisschen.

Verfasst: Freitag 2. November 2007, 17:06
von Duff
BlackJack hat geschrieben:
Duff hat geschrieben:Wenn ich das ganze richtig verstehe, unterscheiden sich die regulären Ausdrücke von python ein wenig zu den "allgemeinen", wie in perl z.B.
Da könnte man genausogut sagen die regulären Ausdrücke von Perl unterscheiden sich von den "allgemeinen" wie in Python zum Beispiel. Oder in sed, oder awk, oder Java, oder… Ausser in den wirklich grundlegenden Sachen unterscheiden die sich alle ein kleines bisschen.
Ok, ich kenne eigentlich eher die von sed, awk, perl. In Java gibt es ja noch erweiterungen, wie es sie vielleicht auch in python gibt.

Verfasst: Freitag 2. November 2007, 18:48
von Leonidas
Hallo Duff, willkommen im Forum,

Zu erwähnen ist noch, das man in Python die Flags seltener direkt in Regulären Ausdruck sondern stattdessen meist als Parameter für `re.compile()` mitgibt. Das hat auch den Vorteil, dass man die langen Flag-Namen wie DOTALL etc. verwenden kann, welche die Lesbarkeit steigern und Fragen die diese grade eben von selbst beantworten :)