104

I have some code like this one:

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

Is it possible to get string "my pattern" from p variable?

3 Answers 3

136
p.pattern

Read more about re module here: http://docs.python.org/library/re.html

Sign up to request clarification or add additional context in comments.

4 Comments

Thanks. I don't read docs becouse i try i dir(p) and it display only several attributes and methods. stackoverflow.com/questions/1415924/…
I did the same, assumed there was no simple way to get it :)
seems like in python3 dir(some_compiled_pattern) displays the attributes, but not in 2.7
>Why not to read docs before posting such questions? Because when you google StackOverflow returns first. Perfectly valid question.
22

From the "Regular Expression Objects" section of the re module documentation:

RegexObject.pattern

The pattern string from which the RE object was compiled.

For example:

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

With the re module in Python 3.0 and above, you can find this by doing a 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']

This however does not work on Python 2.6 (or 2.5) - the dir command isn't perfect, so it's always worth checking the docs!

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

Comments

10

Yes:

print p.pattern

hint, use the dir function in python to obtain a list of members:

dir(p)

this lists:

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

1 Comment

help( value ) is much more useful on the console.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.