[Python-de] Gruppen in sich wiederholenden Sub-Patterns

Stefan Schwarzer sschwarzer at sschwarzer.net
Fr Nov 16 03:13:50 EST 2018


On 16/11/2018 08.25, Dustin Vanidestine wrote:
>> Gibt es eine Möglichkeit, den regulären Ausdruck so umzuschreiben,
>> dass ich alle gewünschten Gruppen bekomme?
>>
>> Falls nicht, wie würdet ihr das Problem sonst lösen? Mir sind
>> mögliche Ansätze eingefallen, aber die wirken alle ziemlich
>> frickelig.
> 
> So würde ich es machen (Python 3.7):
>>>> import re
>>>> regex = re.compile(r"""\(\w+,\w+\)""",
> re.U).findall("""(ab,cd),(ef,gh),(ij,kl),(mn,op)""")
>>>> regex
> ['(ab,cd)', '(ef,gh)', '(ij,kl)', '(mn,op)']
>>>> regex = re.compile(r"""\(\w+,\w+\)""",
> re.U).findall("""Anfang(ab,cd),(ef,gh),(ij,kl),(mn,op)(andereszeug)""")
>>>> regex
> ['(ab,cd)', '(ef,gh)', '(ij,kl)', '(mn,op)']

Das Problem hierbei ist, dass die Kommas zwischen den
eingeklammerten Gruppen Bestandteil der Syntax sind. Es
soll zwischen den Gruppen nicht irgendetwas beliebiges
stehen können.

Ansonsten wäre `findall` natürlich das Mittel der Wahl.

Viele Grüße
Stefan


Mehr Informationen über die Mailingliste python-de