Python函数查找两个标记之间的字符串
我希望构建一个字符串函数来提取两个标记之间的字符串内容。它返回一个提取列表Python函数查找两个标记之间的字符串,python,regex,string,Python,Regex,String,我希望构建一个字符串函数来提取两个标记之间的字符串内容。它返回一个提取列表 def extract(raw_string, start_marker, end_marker): ... function ... return extraction_list 我知道这可以用正则表达式来完成,但是这么快吗?在我的过程中,这将被称为数十亿次。最快的方法是什么 如果标记相同并且出现奇数次,会发生什么情况 如果开始标记和结束标记出现多次,则函数应返回多个字符串。您的速度可能不会超过: d
def extract(raw_string, start_marker, end_marker):
... function ...
return extraction_list
我知道这可以用正则表达式来完成,但是这么快吗?在我的过程中,这将被称为数十亿次。最快的方法是什么
如果标记相同并且出现奇数次,会发生什么情况
如果开始标记和结束标记出现多次,则函数应返回多个字符串。您的速度可能不会超过:
def extract(raw_string, start_marker, end_marker):
start = raw_string.index(start_marker) + len(start_marker)
end = raw_string.index(end_marker, start)
return raw_string[start:end]
但是如果你想尝试正则表达式,就试着对它进行基准测试。这里有一个很好的timeit模块。“数十亿美元”?真正地也许你应该把它写成一个C扩展,而不是百万。“既然你可以拥有数百万,为什么还要拥有数十亿”他同意了。如果您的正则表达式是预编译的,它可能不会比这慢,但是使用@viraraptor的解决方案可以避免可能发生的任何正则表达式开销。我不确定python的re是否有,但这也更易于阅读和维护。谢谢@viraraptor,我喜欢使用索引,而且事实上你已经解释了不止一个字符的标记。如果开始和结束标记出现多次,会发生什么情况?例如,名称的多个“引号”。您希望返回引号中的项目列表