En Python, la (?P<group_name>…)
sintaxis permite referirse a la cadena coincidente a través de su nombre:
>>> import re
>>> match = re.search('(?P<name>.*) (?P<phone>.*)', 'John 123456')
>>> match.group('name')
'John'
¿Qué significa "P"? No pude encontrar ninguna pista en la documentación oficial .
Me encantaría tener ideas sobre cómo ayudar a mis alumnos a recordar esta sintaxis. Sería útil saber qué significa "P" (o podría significar).
python
regex
regex-group
Eric O Lebigot
fuente
fuente
P
representaPlaceholder
.match.groups
(con uns
) obtendrá en silencio una tupla de todos los grupos -_-groups('name')
=>('John', '123456')
cuando lo que realmente quería eragroup('name')
=>'John'
Espero que esto le ahorre a alguien en algún momento.Respuestas:
Como todos estamos adivinando, también podría dar el mío: siempre pensé que significaba Python. Eso puede sonar bastante estúpido, ¿qué, P para Python? - pero en mi defensa, recordaba vagamente este hilo [énfasis mío]:
a lo que Larry Wall respondió:
Entonces, no sé cuál fue la elección original de P, ¿por qué patrón? marcador de posición? pingüinos? - pero puedes entender por qué siempre lo he asociado con Python. Considerando que (1) no me gustan las expresiones regulares y las evito siempre que sea posible, y (2) este hilo sucedió hace quince años, es algo extraño.
fuente
(?<group_name>…)
sintaxis, que parece ser la más popular, incluso Java lo admite ahora.¡Patrón! El grupo nombra un (sub) patrón para su uso posterior en la expresión regular. Consulte la documentación aquí para obtener detalles sobre cómo se utilizan dichos grupos.
fuente
(?P<name>…)
es "patrónname
". Sin embargo, todo es un patrón en una expresión regular, por lo que es extraño etiquetar solo(?P<…>…)
grupos como patrones. Sin embargo, esto servirá para mis alumnos. :)5
. Paradójicamente, se alienta a hablar casualmente, solo siempre sea muy claro y explícito al respecto, por ejemplo. diga todo su comentario anterior a sus alumnos (revisando quizás la última oración;).)Extensión Python. De los documentos de Python:
https://docs.python.org/3/howto/regex.html
fuente