regular expression

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.
Antworten
Gast

Mittwoch 21. Januar 2004, 10:34

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
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Mittwoch 21. Januar 2004, 11:05

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
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Mittwoch 21. Januar 2004, 13:43

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
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

Mittwoch 21. Januar 2004, 13:56

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
"Sie sind nicht berechtigt, unrechtmäßige Kopien dieses Datenträgers zu erstellen." - Microsoft-Weisheit auf einer CD von MS-VisualC++-6.0
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Mittwoch 21. Januar 2004, 14:07

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
thomas duske
User
Beiträge: 1
Registriert: Mittwoch 21. Januar 2004, 10:28
Wohnort: Gotha
Kontaktdaten:

Donnerstag 22. Januar 2004, 16:10

THX für die vielen Tips.
Wenn man es weis ist es wirklich simpel 8)


Greetz
thomas
Antworten