当前位置:  开发笔记 > 编程语言 > 正文

Python正则表达式 - 如何获取匹配的位置和值

如何解决《Python正则表达式-如何获取匹配的位置和值》经验,为你挑选了3个好方法。

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



1> Peter Hoffma..:
import re
p = re.compile("[a-z]")
for m in p.finditer('a1b2c3d4'):
    print(m.start(), m.group())



2> gone..:

取自

正则表达式HOWTO

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

>>> p = re.compile('[a-z]+')
>>> print p.match('::: message')
None
>>> m = p.search('::: message') ; print m

>>> m.group()
'message'
>>> m.span()
(4, 11)

将其与:

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

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

>>> 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()



3> 小智..:

对于Python 3.x

from re import finditer
for match in finditer("pattern", "string"):
    print(match.span(), match.group())

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

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有