bagaimana saya bisa mendapatkan string pola dari pola regexp yang dikompilasi dengan python


87

Saya punya beberapa kode seperti ini:

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

Apakah mungkin mendapatkan string "my pattern"dari pvariabel?

Jawaban:


108
p.pattern

Baca lebih lanjut tentang modul ulang di sini: http://docs.python.org/library/re.html


7
Terima kasih. Saya tidak membaca dokumen karena saya mencoba i dir (p) dan hanya menampilkan beberapa atribut dan metode. stackoverflow.com/questions/1415924/…
Mykola Kharechko

Saya melakukan hal yang sama, dengan asumsi tidak ada cara sederhana untuk mendapatkannya :)
Anentropic

1
Sepertinya di python3 dir (some_compiled_pattern) menampilkan atribut, tetapi tidak di 2.7
David Lam

10
> Mengapa tidak membaca dokumen sebelum memposting pertanyaan seperti itu? Karena ketika Anda Google StackOverflow kembali lebih dulu. Pertanyaan yang sangat valid.
Aaron

21

Dari bagian "Objek Ekspresi Reguler" di redokumentasi modul:

RegexObject.pattern

String pola tempat objek RE dikompilasi.

Sebagai contoh:

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

Dengan remodul di Python 3.0 dan yang lebih baru, Anda dapat menemukannya dengan melakukan hal sederhana 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']

Namun ini tidak berfungsi pada Python 2.6 (atau 2.5) - dirperintahnya tidak sempurna, jadi sebaiknya periksa dokumennya!

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

9

Iya:

print p.pattern

petunjuk, gunakan dirfungsi dalam python untuk mendapatkan daftar anggota:

dir(p)

daftar ini:

['__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 )jauh lebih berguna di konsol.
Jochen Ritzel
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.