Seite 1 von 1

Nach Sonderzeichen suchen

Verfasst: Mittwoch 20. Oktober 2010, 12:56
von goldenflash
Hallo,
Ich suche in einem Text nach dem bestimmten Zeichenfolgen. Eigentlich klappt das auch ganz gut mit:
node_pos = str("Node")
muster = re.compile(node_pos)
treffer = muster.search(inhalt)

allerdings möchte ich eigentlich nicht nach "Node" sondern nach "*Node" suchen. "*" ist leider das Zeichen für Widerholung und ich bekomme immer eine Fehlermeldung!

Wie könnte ich da drangehen?

Danke schonmal^^

Re: Nach Sonderzeichen suchen

Verfasst: Mittwoch 20. Oktober 2010, 13:21
von Hyperion
Das ist ziemlich schräg:

Code: Alles auswählen

node_pos = str("Node")
muster = re.compile(node_pos)
erstere Zeile ließe ich doch auch so schreiben:

Code: Alles auswählen

node_pos = "Node"
Zudem ist der Name irreführend; "pos" erinnert an "Position"; das ist aber keine Positionsangabe...

Es reicht doch

Code: Alles auswählen

pattern = re.compile(r"Node")
Hast Du Dir mal das re-Modul angeguckt? Da ist sogar noch zu einer guten Einführung verlinkt. Damit solltest Du schnell finden, wie man das "*" richtig einsetzt (Tipp: * steht für beliebig viele Wiederholungen von dem Ausdruck davor...)

Außerdem nutze in Zulunft bitte die Python-Code-Tags; dadurch gehen evtl. Einrückungen nicht verloren und das ganze sieht hübsch bunt aus :-)

Re: Nach Sonderzeichen suchen

Verfasst: Mittwoch 20. Oktober 2010, 14:50
von BlackJack
@goldenflash: Du musst den Stern durch einen '\' maskieren, damit er für den regulären Ausdruck seine besondere Bedeutung verliert: ``pattern = re.compile(r'\*Node')``

Re: Nach Sonderzeichen suchen

Verfasst: Mittwoch 20. Oktober 2010, 15:09
von Hyperion
BlackJack hat geschrieben:@goldenflash: Du musst den Stern durch einen '\' maskieren, damit er für den regulären Ausdruck seine besondere Bedeutung verliert: ``pattern = re.compile(r'\*Node')``
Ach mensch, das hab ich wohl falsch verstanden...

Re: Nach Sonderzeichen suchen

Verfasst: Samstag 30. Oktober 2010, 10:08
von goldenflash
BlackJack hat geschrieben:@goldenflash: Du musst den Stern durch einen '\' maskieren, damit er für den regulären Ausdruck seine besondere Bedeutung verliert: ``pattern = re.compile(r'\*Node')``
Hab ganz vergessen mich zu bedanken!

Danke! :D

Re: Nach Sonderzeichen suchen

Verfasst: Samstag 30. Oktober 2010, 15:16
von sma
Will man aus einem Literal einen regulären Ausdruck machen, hilft "re.escape()".

Stefan