代码之家  ›  专栏  ›  技术社区  ›  Mykola Kharechko

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

  •  72
  • Mykola Kharechko  · 技术社区  · 15 年前

    我有一些类似这样的代码:

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

    "my pattern" 从…起 p 变量

    3 回复  |  直到 15 年前
        1
  •  119
  •   Niek de Klein    9 年前
    p.pattern
    

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

        2
  •  21
  •   dbr    15 年前

    "Regular Expression Objects" re 模块文档:

    RegexObject.pattern

    从中编译RE对象的模式字符串。

    例如:

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

    在Python3.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']
    

    dir 命令不是完美的,所以总是值得检查文档!

    >>> print dir(p)
    ['__copy__', '__deepcopy__', 'findall', 'finditer', 'match', 'scanner',
    'search', 'split', 'sub', 'subn']
    
        3
  •  9
  •   Lasse V. Karlsen    15 年前

    对:

    print p.pattern
    

    提示,使用 dir 函数以获取成员列表:

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