Pythonでコンパイルされた正規表現パターンからパターン文字列を取得するにはどうすればよいですか?


87

私はこのようなコードをいくつか持っています:

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

変数"my pattern"から文字列を取得することは可能pですか?

回答:


108
p.pattern

reモジュールの詳細についてはこちらをご覧ください:http//docs.python.org/library/re.html


7
ありがとう。i dir(p)を試してみると、いくつかの属性とメソッドしか表示されないため、ドキュメントを読みません。stackoverflow.com/questions/1415924/...
ミコラKharechko

私は同じことをしました、それを得る簡単な方法がないと仮定しました:)
異栄養性2012年

1
python3のように見えるdir(some_compiled_pa​​ttern)は属性を表示しますが、2.7では表示しません
David Lam

10
>そのような質問を投稿する前にドキュメントを読んでみませんか?あなたがグーグルするとStackOverflowが最初に戻るからです。完全に有効な質問。
アーロン

21

モジュールドキュメントの「正規表現オブジェクト」セクションからre

RegexObject.pattern

REオブジェクトのコンパイル元のパターン文字列。

例えば:

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

rePython 3.0以降のモジュールでは、簡単な方法でこれを見つけることができます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']

9

はい:

print p.pattern

ヒント、dirPythonの関数を使用して、メンバーのリストを取得します。

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

3
help( value )コンソールではるかに便利です。
Jochen Ritzel 2009
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.