In Python erlaubt die (?P<group_name>…)
Syntax, über den Namen auf die übereinstimmende Zeichenfolge zu verweisen:
>>> import re
>>> match = re.search('(?P<name>.*) (?P<phone>.*)', 'John 123456')
>>> match.group('name')
'John'
Wofür steht "P"? Ich konnte keinen Hinweis in der offiziellen Dokumentation finden .
Ich würde gerne Ideen bekommen, wie ich meinen Schülern helfen kann, sich an diese Syntax zu erinnern. Zu wissen, wofür "P" steht (oder stehen könnte), wäre nützlich.
python
regex
regex-group
Eric O Lebigot
quelle
quelle
P
steht fürPlaceholder
.match.groups
(mit einems
) verwenden, erhalten Sie stillschweigend ein Tupel aller Gruppen -_-groups('name')
=>,('John', '123456')
wenn Sie tatsächlich wolltengroup('name')
=>'John'
Ich hoffe, dies spart jemandem irgendwo einige Zeit (en).Antworten:
Da wir alle raten, könnte ich genauso gut meine geben: Ich habe immer gedacht, dass es für Python steht. Das klingt vielleicht ziemlich dumm - was, P für Python?! - aber zu meiner Verteidigung erinnerte ich mich vage an diesen Thread [Hervorhebung von mir]:
worauf Larry Wall antwortete:
Ich weiß also nicht, durch was die ursprüngliche Wahl von P motiviert war - Muster? Platzhalter? Pinguine? - aber Sie können verstehen, warum ich es immer mit Python verbunden habe. Was angesichts der Tatsache, dass (1) ich reguläre Ausdrücke nicht mag und sie nach Möglichkeit meide und (2) dieser Thread vor fünfzehn Jahren passiert ist, seltsam ist.
quelle
(?<group_name>…)
Syntax, die am beliebtesten zu sein scheint - sogar Java unterstützt sie jetzt.Muster! Die Gruppe benennt ein (Unter-) Muster zur späteren Verwendung in der Regex. Einzelheiten zur Verwendung solcher Gruppen finden Sie in der Dokumentation hier .
quelle
(?P<name>…)
ist "Mustername
". Alles ist jedoch ein Muster in einem regulären Ausdruck, daher ist es seltsam, nur(?P<…>…)
Gruppen als Muster zu kennzeichnen . Dies wird jedoch für meine Schüler reichen. :)5
. Paradoxerweise wird empfohlen, beiläufig zu sprechen, nur immer sehr klar und deutlich darüber zu sprechen - z. Sagen Sie Ihren Schülern Ihren vorherigen Kommentar in voller Länge (vielleicht überarbeiten Sie den allerletzten Satz;).)Python-Erweiterung. Aus den Python-Dokumenten:
https://docs.python.org/3/howto/regex.html
quelle