如何获得所捕获组的位置?

时间:2015-03-26 17:03:53

标签: python regex

示例:

r = re.search("a(..)d(.)f", "xxabcdefg")

r.span()会返回(2, 8)整个字符串

但我想获得两个被捕获群组的开始和结束位置,因此(2, 4)(6, 7)

1 个答案:

答案 0 :(得分:2)

r.span()方法采用参数;每个组都有编号,因此请使用12来获取整个文本的两个组0的范围(其中0是默认值):

>>> import re
>>> r = re.search("a(..)d(.)f", "xxabcdefg")
>>> r.span()
(2, 8)
>>> r.span(1)
(3, 5)
>>> r.span(2)
(6, 7)

来自MatchObject.span() method文档:

  

span([group])
  对于MatchObject m ,返回2元组(m.start(group), m.end(group))。请注意,如果 group 没有为匹配做出贡献,则为(-1, -1)默认为零,即整场比赛。