我如何从python中已编译的regexp模式获取模式字符串


87

我有一些这样的代码:

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

是否可以"my pattern"p变量获取字符串?

Answers:


108
p.pattern

在此处阅读有关re模块的更多信息:http : //docs.python.org/library/re.html


7
谢谢。我不阅读文档,因为我尝试使用dir(p),它仅显示几个属性和方法。stackoverflow.com/questions/1415924/...
尼古拉Kharechko

我做同样的事情,假设没有简单的方法可以得到它:)
Anentropic 2012年

1
似乎在python3 dir(some_compiled_pa​​ttern)中显示属性,但不在2.7中
David Lam

10
>为什么在发布此类问题之前不阅读文档?因为当您使用Google 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 09年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.