2009-09-12 11 views

Respuesta

73
p.pattern 

Leer más sobre la re módulo aquí: http://docs.python.org/library/re.html

+7

Gracias. No leo documentos porque pruebo i dir (p) y muestra solo varios atributos y métodos. http://stackoverflow.com/questions/1415924/how-can-i-obtain-pattern-string-from-compiled-regexp-pattern-in-python/1415943#1415943 –

+0

Hice lo mismo, supuse que no era simple forma de conseguirlo :) – Anentropic

+1

parece que en python3 dir (some_compiled_pattern) muestra los atributos, pero no en 2.7 –

7

Sí:

print p.pattern 

pista, utilice la función dir en Python para obtener una lista de los miembros:

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'] 
+2

'help (value)' es mucho más útil en la consola. –

18

Desde la sección "Regular Expression Objects" de la documentación re módulo:

RegexObject.pattern

La cadena de patrón a partir del cual se compiló el objeto RE.

Por ejemplo:

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

Con el módulo re en Python 3.0 y superior, se puede encontrar esta haciendo una simple 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'] 

Sin embargo, esto no trabajo en Python 2.6 (o 2.5): el comando dir no es perfecto, por lo que siempre vale la pena consultar los documentos.

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