Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.python > #5330
| Path | csiph.com!feeder.erje.net!1.eu.feeder.erje.net!fu-berlin.de!uni-berlin.de!not-for-mail |
|---|---|
| From | Stefan Schwarzer <sschwarzer@sschwarzer.net> |
| Newsgroups | de.comp.lang.python |
| Subject | [Python-de] Gruppen in sich wiederholenden Sub-Patterns |
| Date | Thu, 15 Nov 2018 22:59:31 +0100 |
| Lines | 55 |
| Message-ID | <mailman.70.1542319173.6006.python-de@python.org> (permalink) |
| References | <3baad237-6d51-8748-bf15-c9cd66ca5aff@sschwarzer.net> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=utf-8 |
| Content-Transfer-Encoding | 8bit |
| X-Trace | news.uni-berlin.de 9GRRMR9RGMM6QaBbV5Uh4gA2iCD6cWgzxWkXz3bxYQIw== |
| Return-Path | <sschwarzer@sschwarzer.net> |
| X-Original-To | python-de@python.org |
| Delivered-To | python-de@mail.python.org |
| Openpgp | preference=signencrypt |
| Autocrypt | addr=sschwarzer@sschwarzer.net; prefer-encrypt=mutual; keydata= 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 WdtUokwYRxk= |
| User-Agent | Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.24) Gecko/20100411 Thunderbird/2.0.0.24 Mnenhy/0.7.6.666 |
| Content-Language | de-DE |
| X-Provags-ID | V03:K1:c6qeo0qqTs6HsIyHWXppDIlwij4tRAjpTVyKdRP7BlnqG4q8MgB x3j5SQ1Id58wGvkRymbjatQp/wbwyfptj33+kl2bWEozW+ln7kyeICNKEpyOIcjxh3ulWz6 7bH/whMm3kCg35tJxO7Cv0EyZmCJAXgehvFr0SwCuM6/yRxANtmW/UGBU9cUeVbtgOp9ZIv mBImDyE+7uGRZ2xIEZAAA== |
| X-Spam-Flag | NO |
| X-UI-Out-Filterresults | notjunk:1;V01:K0:Z936/j1rF00=:x5+Lbyzy5KDxk1wPUKZUue 4kvN/IxitCjdAT/9hFuXNdmggZdQtcxCBwTJhEC4jFoilkpoTdt9Q6ZT57dCvf4OBVH8il3I3 v0UVvdDB7Tq1Uynkm66OP7j8JyGpRkzDVyyWUwL/h8SYEs6Ih+dQTnYepSvd8lcsfULU3FT40 GjUf/MmLqOB4vKw3gaMQdSmiqqEwIW/B/LGNxKc4JRML+0iNSGLB/wm8H2Qjkbk866Cd7BQvS fKnO/22UdZy1Pyx49sXSe1C0JkWawdyprQi8ZUg1ZpWayVrWHhRw45ED3NVNXzhjFZC5reQBJ jUTbRIIGzQ1oLwIG9RMesPGBhipYb6yPy/ptpRyp9nWQUMsOAMtGYipbmjZLKQy1XyavcMEre bWtiM8xD8o0+yz2PAxorsmUa8mPeBHgD3ug6R3Goixt/JSm9TzAYSsJmRQQf7MypIk2T2AAf0 qtxzUE3YDDpbdd+obnARWqXNChVoRIIZNP6xRNyTujr2ZWMvp23RveV2sx/o6/GguOipPrFlH P+P5UUu9rAvH6YiJXVfuC9WuBrckwX4AJXG1SninghmMcRa/YNhknUFbBlsvuVIiX5dBP48q3 PX9j6qiM7BVH+6lapcubtZidwp0s0OqiXHXuopJRWlq4N8JpDrXGM0vbpbFyPYVS+wwul6mg9 QsZUSKKE9/XBLJPK9+FJjeCRZdbgf0mMzZ1ns2ySCPdDoYTDaLjj6F/XdJz+0XH5UP75hP1V0 PEjDqWotiGUdEk9cE3prBO/DZWhLVfI4IiTk/K3Ygfyaa1T1dPo7sIb11gd3hZiUgCjjsjNZk UMkgjB0Sk78kdfakaBr8gdUJ9uQ2nk0gaTRPbOb7JRQCYb/R/U= |
| X-BeenThere | python-de@python.org |
| X-Mailman-Version | 2.1.29 |
| Precedence | list |
| List-Id | Die Deutsche Python Mailingliste <python-de.python.org> |
| List-Unsubscribe | <https://mail.python.org/mailman/options/python-de>, <mailto:python-de-request@python.org?subject=unsubscribe> |
| List-Archive | <http://mail.python.org/pipermail/python-de/> |
| List-Post | <mailto:python-de@python.org> |
| List-Help | <mailto:python-de-request@python.org?subject=help> |
| List-Subscribe | <https://mail.python.org/mailman/listinfo/python-de>, <mailto:python-de-request@python.org?subject=subscribe> |
| X-Mailman-Original-Message-ID | <3baad237-6d51-8748-bf15-c9cd66ca5aff@sschwarzer.net> |
| Xref | csiph.com de.comp.lang.python:5330 |
Show key headers only | View raw
Hallo,
ich bin gerade auf etwas gestoßen, das mich ziemlich
überrascht hat:
In [22]: import re
In [23]: regex = re.compile(r"""
...: ( \( \w+ , \w+ \) )
...: (?:
...: , ( \( \w+ , \w+ \) )
...: )* # beliebige Anzahl von Wiederholungen!
...: """, re.VERBOSE)
Hier geht es darum, in einem String alle durch Kommas getrennte
Gruppen der Form '(ab,cd)' zu finden. (`\w+` kann natürlich mehr
matchen, aber das sollte hier keinen Unterschied machen.)
Das Folgende funktioniert noch wie erwartet:
In [24]: regex.search('(ab,cd),(ef,gh)').groups()
Out[24]: ('(ab,cd)', '(ef,gh)')
Aber das hat mich überrascht:
In [25]: regex.search('(ab,cd),(ef,gh),(ij,kl)').groups()
Out[25]: ('(ab,cd)', '(ij,kl)')
In [26]: regex.search('(ab,cd),(ef,gh),(ij,kl),(mn,op)').groups()
Out[26]: ('(ab,cd)', '(mn,op)')
Anscheinend findet sich im Match immer nur die letzte Gruppe
aus dem mit `*` wiederholten Sub-Pattern.
_Erwartet_ hatte ich (aber _nicht_ bekommen!):
In [25]: regex.search('(ab,cd),(ef,gh),(ij,kl)').groups()
Out[25]: ('(ab,cd)', '(ef,gh)', '(ij,kl)')
In [26]: regex.search('(ab,cd),(ef,gh),(ij,kl),(mn,op)').groups()
Out[26]: ('(ab,cd)', '(ef,gh)', '(ij,kl)', '(mn,op)')
Kann man erklären, warum sich der Match anders als erwartet
verhält (ohne nur das zu wiederholen, was ich schon gesagt
habe ;-) )?
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.
Viele Grüße
Stefan
Back to de.comp.lang.python | Previous | Next — Next in thread | Find similar
[Python-de] Gruppen in sich wiederholenden Sub-Patterns Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2018-11-15 22:59 +0100 Re: [Python-de] Gruppen in sich wiederholenden Sub-Patterns Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2018-11-17 10:28 +0100
csiph-web