como posso obter string de padrão de padrão regexp compilado em python


87

Eu tenho um código como este:

>>> import re
>>> p = re.compile('my pattern')
>>> print p
_sre.SRE_Pattern object at 0x02274380

É possível obter string "my pattern"de pvariável?

Respostas:


108
p.pattern

Leia mais sobre o módulo re aqui: http://docs.python.org/library/re.html


7
Obrigado. Eu não leio documentos porque tento i dir (p) e ele exibe apenas vários atributos e métodos. stackoverflow.com/questions/1415924/…
Mykola Kharechko

Eu fiz o mesmo, assumindo que não havia uma maneira simples de obtê-lo :)
Anentrópico

1
parece que em python3 dir (some_compiled_pattern) exibe os atributos, mas não em 2.7
David Lam

10
> Por que não ler os documentos antes de postar essas perguntas? Porque quando você google StackOverflow retorna primeiro. Pergunta perfeitamente válida.
Aaron

21

Na seção "Objetos de expressão regular" da redocumentação do módulo:

RegexObject.pattern

A string padrão a partir da qual o objeto RE foi compilado.

Por exemplo:

>>> import re
>>> p = re.compile('my pattern')
>>> p
<_sre.SRE_Pattern object at 0x1001ba818>
>>> p.pattern
'my pattern'

Com o remódulo em Python 3.0 e superior, você pode descobrir isso fazendo um simples dir(p):

>>> print(dir(p))
['__class__', '__copy__', '__deepcopy__', '__delattr__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__', '__gt__',
'__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__',
'__str__', '__subclasshook__', 'findall', 'finditer', 'flags',
'groupindex', 'groups', 'match', 'pattern', 'scanner', 'search',
'split', 'sub', 'subn']

Isso, entretanto, não funciona no Python 2.6 (ou 2.5) - o dircomando não é perfeito, então sempre vale a pena verificar a documentação!

>>> print dir(p)
['__copy__', '__deepcopy__', 'findall', 'finditer', 'match', 'scanner',
'search', 'split', 'sub', 'subn']

9

Sim:

print p.pattern

dica, use a dirfunção em python para obter uma lista de membros:

dir(p)

esta lista:

['__class__', '__copy__', '__deepcopy__', '__delattr__', '__doc__', '__eq__',
'__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__',
'__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'findall', 'finditer', 'flags', 'groupindex', 'groups', 'match', 'pattern',
'scanner', 'search', 'split', 'sub', 'subn']

3
help( value )é muito mais útil no console.
Jochen Ritzel,
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.