Seite 1 von 1

Noch eine Regex Frage

Verfasst: Mittwoch 3. August 2016, 16:32
von Grendel
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?

Re: Noch eine Regex Frage

Verfasst: Mittwoch 3. August 2016, 17:23
von 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+)\)$'

Re: Noch eine Regex Frage

Verfasst: Mittwoch 3. August 2016, 18:42
von Grendel
Hallo,

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