Noch eine Regex Frage

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
Grendel
User
Beiträge: 50
Registriert: Samstag 19. Dezember 2015, 16:06

Hallo,

ich benötige einen Regex-Ausdruck, der eine Zahl mit beliebigen Stellen, eingeschlossen in Klammern, findet, also z.B.
hallo(2)
Datei(343)
foo(44)
bar(3)
etc.

Wie ihr seht, steht der zu findende Ausdruck immer hinten. Interessiert bin ich nur an der Zahl..Um diese zu matchen, wollte ich Gruppen verwenden. Mein nicht funktionierender Lösungsansatz sieht wie folgt aus:

Code: Alles auswählen

regex_class = re.compile(r'([(])(/d+)([)])$')
pattern = regex_class.search(filename)
n = pattern.group(2)
Die Klammern sollen drei Gruppen bilden, auf die zweite Gruppe möchte ich zugreifen.
Was mache ich falsch?
BlackJack

@Grendel: Die zweite Gruppe besteht aus einem / und mindestens einem oder beliebig vielen kleinen 'd's. Mindestens eine oder beliebig viele Ziffern wäre r'\d+' und nicht r'/d+'. Dann findest Du auch Treffer. Allerdings frage ich mich warum Du drei Gruppen hast und nicht nur die wo der Kram drin ist, der dich interessiert: r'[(](\d+)[)]$'. Und dann *kann* man eine literale Klammer als Zeichenklasse ausdrücken, *muss* man aber nicht, und sollte man vielleicht auch nicht, weil's ungewöhnlich ist: r'\((\d+)\)$'
Grendel
User
Beiträge: 50
Registriert: Samstag 19. Dezember 2015, 16:06

Hallo,

erstmal vielen Dank für die Hilfe. Irgendwie hatte ich die irrige Annahme, wenn man gruppiert, muss man alles gruppieren.
Antworten