Seite 1 von 1

Regular Expressions

Verfasst: Freitag 30. August 2002, 18:57
von RicmanX
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

Verfasst: Samstag 31. August 2002, 11:43
von Voges
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

Verfasst: Dienstag 10. September 2002, 19:11
von RicmanX
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? :D