Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python函数查找两个标记之间的字符串_Python_Regex_String - Fatal编程技术网

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,我喜欢使用索引,而且事实上你已经解释了不止一个字符的标记。如果开始和结束标记出现多次,会发生什么情况?例如,名称的多个“引号”。您希望返回引号中的项目列表