Neu in Python: Probleme mit Regex

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
jecko16
User
Beiträge: 1
Registriert: Sonntag 9. Dezember 2018, 01:21

Hallo liebe Coder,

ich habe seit einigen Wochen mit Python angefangen und bin nun bei Regex angekommen. Ich habe schon ziemlich fast alles durch gelesen und werde einfach nicht schlau daraus.

Hier ein Beispiel:
Ich will eine Funktion "contains_braketpair" erstellen, die überprüft, ob ein Text genau eine öffnende "(" und eine schließende Klammer ")" enthält. Die öffnende muss vor der schließenden Klammer kommen. Vor der öffnenden, zwischen öffnender und schließender sowie hinter der schließenden Klammer können beliebig viele andere Zeichen sein. Diese Zeichen dürfen nur nicht "(" oder ")" sein.

Nun habe ich es bis jetzt so hingeschrieben und weiß jetzt nicht was ich weiter tun muss um die besagten Klammern zu überprüfen.

Code: Alles auswählen

import re
def contains_braketpair(text):
    
    re_braketpair = re.search(, text, )

# Hier habe ich einige Asserts zum testen aufgelistet
assert contains_braketpair("some(more)text")
assert contains_braketpair("some()text")
assert contains_braketpair("(more)text")
assert contains_braketpair("some(more)")
assert contains_braketpair("(more)")
assert contains_braketpair("some()")
assert contains_braketpair("()")
assert contains_braketpair("\n()")

Mit re_braketpair möchte ich mit re.search nach den Klammern suchen.


Ich bitte um Hilfe


LG

Justin
nezzcarth
User
Beiträge: 1633
Registriert: Samstag 16. April 2011, 12:47

Ich sehe in deinem Beispiel keinen regulären Ausdruck. Was hast du denn bisher versucht? Schau dir mal an, wie komplementäre Sets mit dem Operator "^" funktionieren. So kann man das lösen.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

search() ist hier schonmal richtig. Du brauchst halt: Öffnende Klammer - beliebiger Text - schließende Klammer. Beachte außerdem dass die Klammern spezielle Regex-Zeichen darstellen. Du musst noch etwas tun, damit sie als reiner Text und nicht in ihrer speziellen Bedeutung interpretiert werden. Mehr Hilfe möchte ich nicht geben, da sonst kein Lerneffekt da ist.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@snafu: Du hast noch nicht die Einschränkung vergessen, dass es exakt ein Klammernpaar geben muß, wobei die Beispiele nur einen einfachen Fall abprüfen.
Antworten