Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
-
RicmanX
- User
- Beiträge: 69
- Registriert: Donnerstag 29. August 2002, 17:10
- Wohnort: Erfurt
-
Kontaktdaten:
Freitag 30. August 2002, 18:57
Hi,
ich habe mal angefangen mich mit RE in Python auseinander zu setzen, aber irgendwie komm ich da nicht wirklich weiter. Wie nutz ich sie effizient und einfach? Wär schön wenn das mal an dem Beispiel ginge, was von PERL kommt:
Code: Alles auswählen
$browser=$ENV{'HTTP_USER_AGENT'};
if($browser=~ /Opera (\d\.\d{1,2})/i) { $opera="$1" } # Opera
if($browser=~ /MSIE (\d\.\d{1,2})/i && !$opera) { $ie="$1"; } # Interexplorer
if($browser=~ /Mozilla\/(4\.\d{1,2})/i && !$opera) { $ns="$1"; } # NS4
if($browser=~ /Mozilla\/(\d\.\d{1,2}).*Gecko/i) { $gecko="$1"; } # NS6/Mozilla
Ich hoff ma das es ähnlich einfach geht!?
thx, Ric
-
Voges
- User
- Beiträge: 564
- Registriert: Dienstag 6. August 2002, 14:52
- Wohnort: Region Hannover
Samstag 31. August 2002, 11:43
Hallo!
Vielleicht geht es so:
Code: Alles auswählen
browser = "MSIE 7.77"
try:
opera = re.findall(r"Opera (\d\.\d{1,2})",browser)[0]
except IndexError:
try:
ie = re.findall(r"MSIE (\d\.\d{1,2})",browser)[0]
except IndexError:
try:
ns = re.findall(r"Mozilla (\d\.\d{1,2})",browser)[0]
except IndexError:
pass # und so weiter
findall() gibt eine Liste der gefundenen Gruppen zurück, in diesem Fall bei Erfolg eine Liste mit genau einem Element. Wenn der Pattern nicht passt, ist die Liste leer und beim Zugriff auf das erste Element erfolgt eine IndexError-Ausnahme. Ich weiß nicht ob das guter Stil ist, aber ich arbeite gerne mit try anstelle von if.
Jan
-
RicmanX
- User
- Beiträge: 69
- Registriert: Donnerstag 29. August 2002, 17:10
- Wohnort: Erfurt
-
Kontaktdaten:
Dienstag 10. September 2002, 19:11
Ich hoff ma es ist nich so schlimm wenn's hier net wirklich passt, aber brauch was um Sonderzeichen (HTML) in Hex-Zeichen umwandeln zu könn:
Code: Alles auswählen
sub encode {
my $str=$_[0];
$str =~ s/([^0-9a-zA-Z\-\_\.\,\@\!\~\*\'\(\)])/(($1 eq " ") ? "+" : "&#x".sprintf("%02x",ord($1)).";")/ego;
return $str;
}
sub decode {
my $str=$_[0];
$str =~ tr/+/ /;
$str =~ s/&#x([A-Fa-f0-9]{2});/pack("C", hex($1))/eg;
return $str;
}
Könnt ihr mir mal wieder helfen?
