我想从一个特定位置开始在更大的字符串中搜索正则表达式匹配,而不使用字符串切片.
我的背景是我想迭代搜索一个字符串,以获得各种正则表达式的匹配.Python中的一个自然解决方案是跟踪字符串中的当前位置并使用例如
re.match(regex, largeString[pos:])
Run Code Online (Sandbox Code Playgroud)
在一个循环中.但是对于非常大的字符串(~1MB),字符串切片largeString[pos:]变得昂贵.我正在寻找一种解决方法.
旁注:有趣的是,在Python文档的一个利基中,它讨论pos了匹配函数的一个可选参数(这正是我想要的),这是函数本身找不到的:-).
具有pos和endpos参数的变体仅作为正则表达式对象的成员存在.试试这个:
import re
pattern = re.compile("match here")
input = "don't match here, but do match here"
start = input.find(",")
print pattern.search(input, start).span()
Run Code Online (Sandbox Code Playgroud)
......产出 (25, 35)