Seite 1 von 1

regular expression

Verfasst: Mittwoch 21. Januar 2004, 10:34
von Gast
Hallo

Kann man bei Regular Expression Variablen mit einfließen lassen?

Bsp.
Var = 'Test'
String = "lasdgfasTestshdgflshf"
pattern = '(.*)(Var)(.*)'
patt_ex = re.compile(pattern)
result = patt_ex.match(string)
print result.group(2)
>>> 'Test'

Kann mir jemand sagen ob das vom Prinzip her funktioniert auch wenn das syntaktisch nicht alles korrekt ist?

Vielen Dank für die Hilfe
thomas

Re: regular expression

Verfasst: Mittwoch 21. Januar 2004, 11:05
von Voges
Hallo!
Anonymous hat geschrieben:Kann man bei Regular Expression Variablen mit einfließen lassen?
Ganz simpel:
pattern = '(.*)(' + Var + ')(.*)'
Du musst natürlich sicherstellen, das Var nur etwas enthält, was aus Sicht des RegExps gültig ist.

Jan

Verfasst: Mittwoch 21. Januar 2004, 13:43
von Dookie
Hallo Thomas,

oder Elegant:

Code: Alles auswählen

Var = "Test"
pattern = (.*)(%s)(.*)' % (Var,)
patt_ex = re.compile(pattern)
result = patt_ex.match(string)
print result.group(2) 

Gruß

Dookie

Verfasst: Mittwoch 21. Januar 2004, 13:56
von joerg
Ich würde sicherheitshalber folgendes nehmen:

Code: Alles auswählen

pattern = '(.*)(%s)(.*)' % re.escape(Var)
Dann darf Var auch exotischere Zeichen enthalten.
(Außerdem fehlte bei Dookie eine Anführungszeichen.)

Grüße
Jörg

Verfasst: Mittwoch 21. Januar 2004, 14:07
von Voges
Hallo!
joerg hat geschrieben:Ich würde sicherheitshalber folgendes nehmen:
Wenn es für die konkrete Anwendung sinnvoll ist, denn so verbaut man sich die Chance, RegExp-Sonderzeichen benutzen zu können. Sowas wie Var = "Te[sx]t" funktioniert dann nicht mehr.
Jan

Verfasst: Donnerstag 22. Januar 2004, 16:10
von thomas duske
THX für die vielen Tips.
Wenn man es weis ist es wirklich simpel 8)


Greetz
thomas