![](https://secure.gravatar.com/avatar/db780abc037d6db11a884827cd152bb3.jpg?s=120&d=mm&r=g)
Thomas Rachel <nutznetz-0c1b6768-bfa9-48d5-a470-7603bd3aa915@spamschutz.glglgl.de> wrote:
Perl:
if (@ARGV and $ARGV[0] =~ /(\w+)/) { print "$1\n" }
Python:
if len(sys.argv)>1: m = re.match(r".*?(\w+)",sys.argv[1]) if m: print m.group(1)
if len(sys.argv)>1 and m = re.match(r".*?(\w+)",sys.argv[1]): print m.group(1)
erbrachte einen syntax error: Zuweisungen sind bei if nicht zulaessig?!
Nein, diese beiden sind strikt getrennt. AFAICT kannst Du nur mit zwei Ebene arbeiten, wie Du schriebst.
Aber Deine RE ist zu kompliziert. Wenn Du re.search() statt re.match() verwendest, kannst Du das .*? weglassen:
m = re.search(r"(\w+)", sys.argv[1])
Das ist schon mal was :-) Weil meine Programme exzessiv regexp und backreferences verwenden, hab ich mir jetzt eine Funktion dafuer geschrieben: def match(x,s,f=None): global _ _ = [ '' ] if f: m = re.search(x,s,flags=f) else: m = re.search(x,s) if m and m.groups: _.extend(m.groups()) return m Damit kann ich jetzt wie gewohnt in einer Zeile eine Abfrage machen: if len(sys.argv)>1 and match(r"(x+)",sys.argv[1],re.I): print _[1] -- + Ulli Horlacher + framstag@tandem-fahren.de + http://tandem-fahren.de/ +