come posso ottenere la stringa del pattern dal pattern regexp compilato in python


87

Ho un codice come questo:

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

È possibile ottenere una stringa "my pattern"dalla pvariabile?

Risposte:


108
p.pattern

Maggiori informazioni sul modulo re qui: http://docs.python.org/library/re.html


7
Grazie. Non leggo documenti perché provo i dir (p) e visualizza solo diversi attributi e metodi. stackoverflow.com/questions/1415924/...
Mykola Kharechko

Ho fatto lo stesso, supponendo che non ci fosse un modo semplice per ottenerlo :)
Anentropic,

1
sembra che in python3 dir (some_compiled_pattern) mostri gli attributi, ma non in 2.7
David Lam

10
> Perché non leggere documenti prima di inviare domande del genere? Perché quando google StackOverflow ritorna per primo. Domanda perfettamente valida.
Aaron

21

Dalla sezione "Regular Expression Objects" della redocumentazione del modulo:

RegexObject.pattern

La stringa del modello da cui è stato compilato l'oggetto RE.

Per esempio:

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

Con il remodulo in Python 3.0 e versioni successive, puoi trovarlo facendo un semplice 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']

Questo tuttavia non funziona su Python 2.6 (o 2.5) - il dircomando non è perfetto, quindi vale sempre la pena controllare i documenti!

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

9

Sì:

print p.pattern

suggerimento, usa la dirfunzione in python per ottenere un elenco di membri:

dir(p)

questo elenca:

['__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 )è molto più utile sulla console.
Jochen Ritzel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.