RegExpr '\' matchen

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.
Benutzeravatar
hehejo
User
Beiträge: 56
Registriert: Freitag 18. Februar 2005, 18:24
Wohnort: Stein
Kontaktdaten:

RegExpr '\' matchen

Beitragvon hehejo » Dienstag 10. Mai 2005, 12:18

Hi, ich möchte mit regulären Ausdrücken herausfinden, ob bestimmte Sonderzeichen in einem String enthalten sind.
Das hier klappt ganz gut:

Code: Alles auswählen

>>> import re
>>> _match = re.compile("[\/*?\"<>|]")

Möchte ich aber den '\' matchen dann kommt dieser Fehler

Code: Alles auswählen

>>> import re
>>> _match = re.compile("[\]")
Traceback (most recent call last):
  File "<pyshell#22>", line 1, in ?
    _match = re.compile("[\]")
  File "E:\python\python\lib\sre.py", line 179, in compile
    return _compile(pattern, flags)
  File "E:\python\python\lib\sre.py", line 230, in _compile
    raise error, v # invalid expression
error: unexpected end of regular expression

_match = re.compile("[\\]") hat er auch nicht genommen.
Wie muss ich denn das '\' richtig maskieren?
Gruß, Johannes
ascii stupid question,
get stupid ansii

http://www.hehejo.de
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Dienstag 10. Mai 2005, 13:08

Hi!

Code: Alles auswählen

_match = re.compile(r"\\")
_match = re.compile(r"[\/*?\"<>|\\]")


Gruß, mawe
Benutzeravatar
hehejo
User
Beiträge: 56
Registriert: Freitag 18. Februar 2005, 18:24
Wohnort: Stein
Kontaktdaten:

Beitragvon hehejo » Dienstag 10. Mai 2005, 13:11

ui danke!
Was bedeutet denn das "r"?
Gruß, Johannes

ascii stupid question,
get stupid ansii


http://www.hehejo.de
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Dienstag 10. Mai 2005, 13:16

Um ehrlich zu sein: ich hab keine Ahnung :oops:
Regex vielleicht?
Benutzeravatar
hehejo
User
Beiträge: 56
Registriert: Freitag 18. Februar 2005, 18:24
Wohnort: Stein
Kontaktdaten:

Beitragvon hehejo » Dienstag 10. Mai 2005, 13:33

Code: Alles auswählen

>>> import re
>>> co = re.compile(r"[\/*?\"<>|\\]")

Code: Alles auswählen

>>> match = co.match("/hallo")
>>> match or False
<_sre.SRE_Match object at 0x00DB0330>
>>> match = co.match("\\hallo")
>>> match or False
<_sre.SRE_Match object at 0x00BE1FA8>
>>> match = co.match("(demo) (C) Viklund / Karlsson")
>>> match or False
False
>>>

Gut, die RegExpr funktioniert - nur leider nicht beim letzen Teststring. An was kann denn das nun liegen?
Gruß, Johannes

ascii stupid question,
get stupid ansii


http://www.hehejo.de
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 10. Mai 2005, 13:53

r steht für Raw. Also Rohstring: soll heißen, die ganzen Backslashes werden ignoriert und einfach als Backslashes genommen, so als würde man sie escapen. Praktisch eben für Regex und Dateipfade unter einem bestimmten Betriebssystem.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
hehejo
User
Beiträge: 56
Registriert: Freitag 18. Februar 2005, 18:24
Wohnort: Stein
Kontaktdaten:

Beitragvon hehejo » Dienstag 10. Mai 2005, 13:58

Das hieße dann ja, das ich aus
co = re.compile(r"[\/*?\"<>|\\]")
dieses hier machen kann:
co = re.compile(r"[/*?\"<>|\]")

Nur warum hat er in meinem Beispiel vorhin den lezten String nicht "erkannt"?
Gruß, Johannes

ascii stupid question,
get stupid ansii


http://www.hehejo.de
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 10. Mai 2005, 14:46

Weil du .match() benutzt. Versuch doch mal .search() stattdessen.
Zuletzt geändert von Leonidas am Dienstag 10. Mai 2005, 15:09, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
hehejo
User
Beiträge: 56
Registriert: Freitag 18. Februar 2005, 18:24
Wohnort: Stein
Kontaktdaten:

DANKE

Beitragvon hehejo » Dienstag 10. Mai 2005, 14:59

*klatsch*
DANKE
Gruß, Johannes

ascii stupid question,
get stupid ansii


http://www.hehejo.de

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder