Python在字符串中的特定点重新匹配

时间:2014-03-16 22:40:42

标签: python regex

如果我在Python中有一个给定的字符串s,是否可以轻松检查正则表达式是否匹配从字符串中特定位置i开始的字符串?

我宁愿不将整个字符串从i切片到最后,因为它看起来不太可扩展(我认为排除了re.match)。

2 个答案:

答案 0 :(得分:5)

re.match并不直接支持此功能。但是,如果您使用re.compile预编译正则表达式(通常是一个好主意),那么RegexObject的类似方法match(和{{3} })都采用可选的 pos 参数:

  

可选的第二个参数 pos 给出了搜索开始的字符串中的索引;它默认为0。这并不完全等同于切割字符串; '^'模式字符匹配字符串的实际开头和新行后面的位置,但不一定匹配搜索开始的索引。

示例:

import re
s = 'this is a test 4242 did you get it'
pat = re.compile('[a-zA-Z]+ ([0-9]+)')
print pat.match(s, 10).group(0)

输出:

'test 4242'

答案 1 :(得分:0)

虽然re.match不支持此功能,但新的regex模块(旨在替换re模块)具有大量新功能,包括pos和{ {1}} endpossearchmatchsub的参数。虽然还没有官方,但regex模块可以安装pip,适用于Python版本2.5到3.4。这是一个例子:

subn