Python 大型数据集上re.findall的效率问题

Python 大型数据集上re.findall的效率问题,python,performance,Python,Performance,我正在学习麻省理工开放式课程的算法课程。在一次讲座中提到,我们在使用re.findall时必须小心,因为re通常是指数复杂度算法。 这是解析大型文件或数据集时需要考虑的问题吗?是否有正则表达式的替代方法可以有效地从数据中提取模式?这取决于您想要做什么 通常,使用完成任务所需的最简单工具 我想,中的将比正则表达式更有效,但不允许通配符、重复等。如果您要查找的模式都在一行中,您可以一次搜索一行,在下一行之前处理每一行(并将其从内存中取出)。如果您要查找字符串的开头或结尾,则使用mystring.st

我正在学习麻省理工开放式课程的算法课程。在一次讲座中提到,我们在使用re.findall时必须小心,因为re通常是指数复杂度算法。
这是解析大型文件或数据集时需要考虑的问题吗?是否有正则表达式的替代方法可以有效地从数据中提取模式?

这取决于您想要做什么

通常,使用完成任务所需的最简单工具

我想,中的
将比正则表达式更有效,但不允许通配符、重复等。如果您要查找的模式都在一行中,您可以一次搜索一行,在下一行之前处理每一行(并将其从内存中取出)。如果您要查找字符串的开头或结尾,则使用
mystring.startswith()
mystring.endswith()
-这些方法更有效

您可能能够将数据分割成更易于管理的块

如果您想要多行搜索,而不是在开始或结束,并包括通配符或重复。。。你可能被正则表达式卡住了