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.
[...]
s = a[0]
pattern = re.compile(r'''
[...]''' +
s + ''' # s wird hier nicht als raw-string gewertet
[...]
''', re.VERBOSE)
gibt es etwas einfaches wie s.toRaw()? oder einen anderen ansatz? habe gerade das gefühl ich seh den wald vor lauter bäumen nicht...
€: hm, ich hätte mal vorher hier im forum suchen sollen... problem gelöst €2: oder auch doch nicht...
Zuletzt geändert von diff am Sonntag 7. Oktober 2007, 12:58, insgesamt 1-mal geändert.
Raw Strings sind nur syntaktischer Zucker. Technisch gesehen (z.B. wenn du sie an einen Namen (z.B. s) bindest) sind das ganz normale Strings. Sprich, da musst du nichts konvertieren.
hm ok, dann hab ich wohl am problem vorbeigesucht.
also s ist in der form '[123]abc'... so trifft es aber die regexp nicht (auch nicht als raw), '\[123\]abc' aber schon. '[' und ']' sind ja aber auch eigentlich keine escape-sequenzen?
Mit den eckigen Klammern haben raw strings nichts zu tun, die sind nur dazu da, dass Escape-Sequenzen (also mit \) nicht escapet werden.
Deine Frage kann ich nicht beantworten, weil ich nicht genau verstehe, was du erreichen willst... (aber [ hat in RegExps schon eine spezielle Bedeutung, wenn du keinen \ davor schreibst).
Wie lumax schon sagte haben '[' und ']' eine besondere Bedeutung in regulären Ausdrücken. '[123]abc' erkennt Zeichenketten die eine der Ziffern 1 bis 3 und dann die Buchstabenfolge 'abc' enthält. Also '1abc', '2abc', und '3abc'. Wenn Du die eckigen Klammern erkennen willst, müssen diese durch ein '\' geschützt werden. Wenn die Daten von irgendwoher "ungeschützt" kommen, kann man `re.escape()` vewenden: