No Python, a (?P<group_name>…)
sintaxe permite referir-se à string correspondente através de seu nome:
>>> import re
>>> match = re.search('(?P<name>.*) (?P<phone>.*)', 'John 123456')
>>> match.group('name')
'John'
O que significa "P"? Não encontrei nenhuma dica na documentação oficial .
Gostaria muito de ter idéias sobre como ajudar meus alunos a se lembrar dessa sintaxe. Saber o que "P" representa (ou pode representar) seria útil.
python
regex
regex-group
Eric O Lebigot
fonte
fonte
P
significaPlaceholder
.match.groups
(com ums
), silenciosamente obterá uma tupla de todos os grupos -_-groups('name')
=>('John', '123456')
quando o que você realmente queria eragroup('name')
=>'John'
Espero que isso salve alguém em algum lugar em algum momento.Respostas:
Como todos nós estamos adivinhando, eu também poderia dar o meu: eu sempre pensei que isso representasse o Python. Isso pode parecer muito estúpido - o que, P para Python ?! - mas em minha defesa, lembrei - me vagamente deste tópico [grifo meu]:
ao qual Larry Wall respondeu:
Então, eu não sei qual foi a motivação original da escolha de P? espaço reservado? pinguins? - mas você pode entender por que sempre o associei ao Python. O que, considerando que (1) eu não gosto de expressões regulares e as evito sempre que possível, e (2) esse tópico aconteceu quinze anos atrás, é meio estranho.
fonte
(?<group_name>…)
sintaxe, que parece ser a mais popular - até o Java suporta agora.Padronizar! O grupo nomeia um (sub) padrão para uso posterior na regex. Consulte a documentação aqui para obter detalhes sobre como esses grupos são usados.
fonte
(?P<name>…)
é "padrãoname
". Tudo é um padrão, porém, em uma regexp, por isso é meio estranho rotular(?P<…>…)
grupos como padrões. Isso servirá para meus alunos. :)5
. Paradoxalmente, é incentivado a falar casualmente, sempre seja muito claro e explícito sobre isso - por exemplo. informe o seu comentário anterior na íntegra comprimento para os seus alunos (revisando talvez a última frase;)).Extensão Python. No Python Docos:
https://docs.python.org/3/howto/regex.html
fonte