Nach Sonderzeichen suchen

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
goldenflash
User
Beiträge: 2
Registriert: Mittwoch 20. Oktober 2010, 12:32

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^^
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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 :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
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')``
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
goldenflash
User
Beiträge: 2
Registriert: Mittwoch 20. Oktober 2010, 12:32

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
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Will man aus einem Literal einen regulären Ausdruck machen, hilft "re.escape()".

Stefan
Antworten