2009-09-12 7 views

Répondre

73
p.pattern 

En savoir plus sur le module re ici: http://docs.python.org/library/re.html

+7

Merci. Je ne lis pas docs parce que j'essaye je dir (p) et il n'affiche que plusieurs attributs et méthodes. http://stackoverflow.com/questions/1415924/how-can--obtain-pattern-string-from-compiled-regexp-pattern-in-python/1415943#1415943 –

+0

J'ai fait de même, supposé qu'il n'y avait pas de simple façon de l'obtenir :) – Anentropic

+1

semble comme dans python3 dir (some_compiled_pattern) affiche les attributs, mais pas dans 2.7 –

7

Oui:

print p.pattern 

soupçon, utilisez la fonction dir en python pour obtenir une liste des membres:

dir(p) 

cette listes:

['__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)' est beaucoup plus utile sur la console. –

18

Dans la section "Regular Expression Objects" de la documentation du module re:

RegexObject.pattern

La chaîne de configuration à partir de laquelle l'objet RE a été compilé.

Par exemple:

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

Avec le module re en Python 3.0 et au-dessus, vous pouvez trouver cela en faisant un dir(p) simple:

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

Cela ne pas travail sur Python 2.6 (ou 2.5) - la commande dir n'est pas parfaite, donc ça vaut toujours la peine de vérifier les docs!

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