Python's Archiver

為方便港臺同胞閱覽,Python中國特別推出簡繁體內容轉換功能

zkfarmer 发表于 2008-11-19 18:05

4.2.5 匹配对象

匹配对象的实例支持下列方法和属性:

expand(template)
    返回通过在模版字符串template上反斜线替代获得的字符串, 通过sub()方法完成。转码,诸如“\n”被转换成相应的字符串,数字反向参考 ("\1", "\2") 和名称反向参考 ("\g<1>", "\g<name>") 通过对应组的内容被替换。

group([group1, ...])
    返回匹配的一个或多个子组。 如果有一个单一的参数,结果是一个单一的字符串; 如果有多个参数, 结果是每个参数一项的元组。没有参数, group1 缺省为0 (整个匹配被返回)。如果一个 groupN 参数是0, 对应的返回值是整个匹配字符串; 如果它在包含的范围[1..99]中,这是字符串匹配对应的括号组。 如果组数是负的或比模式中定义的组数要大,一个IndexError异常被挂起。如果一个包含在模式的一部分中的组不匹配,对应的结果为None。 如果一个包含在模式的一部分中的组匹配多次,返回最后的匹配。

    如果正则表达式使用(?P<name>...)语法, groupN 参数也可以是通过它们的组名称标识组的字符串。 在模式中如果一个字符串参数没有被用作一个组名称, 一个 IndexError 异常被挂起。

    一个适度复杂的例子:

    m = re.match(r"(?P<int>\d+)\.(\d*)", '3.14')

    执行这个匹配后, m.group(1)是 '3',同样地m.group('int'),和 m.group(2)是'14'。

groups([default])
    返回包含匹配的所有子组的一个元组,从1直到无论多少组在这个模式中。 groups使用的default 参数 不包含在匹配中;它缺省为 None。 (不兼容性注解:在最初的Python 1.5版本中,如果该元组是一个元素的长度,替代返回一个字符串。 后来的版本中 (1.5.1往上), 这种情况下返回一个单独的元组。)

groupdict([default])
    返回包含该匹配所有指定名称的子组的一个字典, 关键字通过子组的名称。 groups 使用的default参数不包含在匹配中;缺省为 None。

start([group])
end([group])
    返回通过group匹配的子串的开头和结尾的索引;group 缺省为0(意思是整个匹配的子串)。如果group 存在但没有提供给匹配返回 -1。对于一个匹配对象m, 和一个组 g 没有提供给匹配,通过组 g匹配的子串 (相当于 m.group(g)) 是

    m.string[m.start(g):m.end(g)]

    注意如果group 匹配一个null字符串m.start(group)将等于m.end(group)。 例子, m = re.search('b(c?)', 'cba')后, m.start(0) 是1, m.end(0) 是 2, m.start(1)和m.end(1) 都是2,并且 m.start(2) 挂起一个IndexError异常。

span([group])
    对于匹配对象 m,返回二元组 (m.start(group), m.end(group))。注意如果 group 没有提供给匹配,该二元组是(-1, -1)。再者, group 缺省为0。

pos
    被传递给RegexObject的search() 或 match()方法的pos值。它是RE引擎开始查找一个匹配时字符串的索引。

endpos
    被传递给RegexObject的search() 或 match()方法的endpos值。它是RE引擎不会再往后的字符串索引。

lastindex
    最后匹配捕获的组的整数索引, 或如果根本没有匹配任何组为 None。 例如, 表达式 (a)b, ((a)(b)), 和 ((ab))如果应用于字符串'ab'将有lastindex == 1,然而如果应用于同样的字符串,表达式 (a)(b) 将有lastindex == 2。

lastgroup
    最后匹配捕获的组的名称, 或如果组没有名称, 或根本没有匹配的组,为 None 。

re
    正则表达式对象的 match()或search()方法 产生的MatchObject (匹配对象)实例。

string
    传递给 match()或search()的字符串


出处[url=http://www.okpython.com]Python中国[/url],由zkfarmer翻译整理,提交错误和意见在[url=http://www.zkfarmer.org]这里[/url]。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.