为了账号安全,请及时绑定邮箱和手机立即绑定

Python Regex-如何获取匹配项的位置和值

/ 猿问

Python Regex-如何获取匹配项的位置和值

慕桂英546537 2019-12-21 12:44:09

如何使用该re模块获取所有比赛的开始和结束位置?例如给定的模式r'[a-z]'和字符串,'a1b2c3d4'我想获得它找到每个字母的位置。理想情况下,我也想找回比赛的文字。



查看完整描述

3 回答

?
四季花海

import re

p = re.compile("[a-z]")

for m in p.finditer('a1b2c3d4'):

    print(m.start(), m.group())


查看完整回答
反对 回复 2019-12-21
?
炎炎设计

摘自


正则表达式操作方法


span()在单个元组中返回起始索引和结束索引。由于match方法仅检查RE是否在字符串开头匹配,因此start()始终为零。但是,RegexObject实例的搜索方法将扫描字符串,因此在这种情况下,匹配可能不会从零开始。


>>> p = re.compile('[a-z]+')

>>> print p.match('::: message')

None

>>> m = p.search('::: message') ; print m

<re.MatchObject instance at 80c9650>

>>> m.group()

'message'

>>> m.span()

(4, 11)

结合使用:


在Python 2.2中,finditer()方法也可用,它返回一个MatchObject实例序列作为迭代器。


>>> p = re.compile( ... )

>>> iterator = p.finditer('12 drummers drumming, 11 ... 10 ...')

>>> iterator

<callable-iterator object at 0x401833ac>

>>> for match in iterator:

...     print match.span()

...

(0, 2)

(22, 24)

(29, 31)

您应该能够按以下顺序进行操作


for match in re.finditer(r'[a-z]', 'a1b2c3d4'):

   print match.span()


查看完整回答
反对 回复 2019-12-21
?
元芳怎么了

对于Python 3.x


from re import finditer

for match in finditer("pattern", "string"):

    print(match.span(), match.group())

\n对于字符串中的每个匹配,您将获得独立的元组(分别包含匹配项的第一个和最后一个索引)和匹配项本身。


查看完整回答
反对 回复 2019-12-21

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信