Comment puis-je obtenir une chaîne de motifs à partir d’un modèle d’expressions rationnelles compilé en python

J’ai du code comme celui-ci:

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

Est-il possible d’obtenir la chaîne "my pattern" partir de la variable p ?

 p.pattern 

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

Dans la section “Objets d’expression régulière” de la documentation du module re :

RegexObject.pattern

La chaîne de modèle à partir de laquelle l’object RE a été compilé.

Par exemple:

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

Avec le module re dans Python 3.0 et supérieur, vous pouvez le trouver en faisant un simple dir(p) :

 >>> print(dir(p)) ['__class__', '__copy__', '__deepcopy__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getatsortingbute__', '__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 fonctionne toutefois pas sur Python 2.6 (ou 2.5) – la commande dir n’est pas parfaite, il est donc toujours utile de vérifier les documents!

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

Oui:

 print p.pattern 

Astuce, utilisez la fonction dir de python pour obtenir la liste des membres:

 dir(p) 

cette liste:

 ['__class__', '__copy__', '__deepcopy__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getatsortingbute__', '__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']