2009-09-12 5 views
63

でコンパイルした正規表現パターンからパターン文字列を取得することができます私が持っているこのようないくつかのコード:どのように私は、Python

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

それはp変数から文字列"my pattern"を取得することはできますか?

答えて

73
p.pattern 

ここでモジュールを再について詳しく読む: http://docs.python.org/library/re.html

+7

ありがとうございました。私はdir(p)を試し、いくつかの属性とメソッドしか表示しないので、私はドキュメントを読みません。 http://stackoverflow.com/questions/1415924/how-can-i-obtain-pattern-string-from-compiled-regexp-pattern-in-python/1415943#1415943 –

+0

私は同じことをしました、単純ではないと仮定しましたそれを得る方法:) – Anentropic

+1

はpython3 dir(some_compiled_pa​​ttern)のように見えますが、属性を表示しますが、2.7 –

7

はい:

print p.pattern 

ヒントを、メンバーのリストを取得するためにpythonでdir機能を使用します。

dir(p) 

リストには:

モジュールのドキュメントの "Regular Expression Objects"セクションから
['__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)'はコンソール上でもっと便利です。 –

18

RegexObject.pattern

REオブジェクトがコンパイルされたパターン文字列。例えば

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

はPython 3.0以上でreモジュールでは、あなたが簡単な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'] 

これがないない仕事Python 2.6(または2.5)で - dirコマンドは完璧ではないので、常にドキュメントをチェックする価値があります!

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