En Python, la (?P<group_name>…)
syntaxe permet de faire référence à la chaîne correspondante via son nom:
>>> import re
>>> match = re.search('(?P<name>.*) (?P<phone>.*)', 'John 123456')
>>> match.group('name')
'John'
Que signifie «P»? Je n'ai trouvé aucun indice dans la documentation officielle .
J'aimerais avoir des idées sur la façon d'aider mes élèves à se souvenir de cette syntaxe. Il serait utile de savoir ce que "P" signifie (ou pourrait représenter).
python
regex
regex-group
Eric O Lebigot
la source
la source
P
signifiePlaceholder
.match.groups
(avec uns
), vous obtiendrez silencieusement un tuple de tous les groupes -_-groups('name')
=>('John', '123456')
quand ce que vous vouliez réellement étaitgroup('name')
=>'John'
J'espère que cela fera gagner du temps à quelqu'un quelque part.Réponses:
Puisque nous devinons tous, je ferais aussi bien de donner le mien: j'ai toujours pensé que cela représentait Python. Cela peut sembler assez stupide - quoi, P pour Python?! - mais pour ma défense, je me suis vaguement souvenu de ce fil [c'est moi qui souligne]:
à quoi Larry Wall a répondu:
Donc je ne sais pas en quoi le choix initial de P était motivé par - motif? espace réservé? des pingouins? - mais vous pouvez comprendre pourquoi je l'ai toujours associé à Python. Ce qui compte tenu du fait que (1) je n'aime pas les expressions régulières et les évite autant que possible, et (2) ce fil de discussion s'est produit il y a quinze ans, est assez étrange.
la source
(?<group_name>…)
syntaxe, qui semble être la plus populaire - même Java la prend désormais en charge.Modèle! Le groupe nomme un (sous) modèle pour une utilisation ultérieure dans l'expression régulière. Consultez la documentation ici pour plus de détails sur l'utilisation de ces groupes.
la source
(?P<name>…)
c'est "patternname
". Tout est un modèle, cependant, dans une expression rationnelle, il est donc assez étrange d'étiqueter uniquement les(?P<…>…)
groupes comme des modèles. Cela fera cependant l'affaire pour mes étudiants. :)5
. Paradoxalement, il est encouragé à parler avec désinvolture, soyez toujours très clair et explicite à ce sujet - par exemple. racontez votre commentaire précédent en entier à vos élèves (en révisant peut-être la toute dernière phrase;).)Extension Python. Du Python Docos:
https://docs.python.org/3/howto/regex.html
la source