我正在阅读麻省理工学院开放式课程的算法课程。在一个讲座中提到我们必须小心使用re.findall,因为re通常可以是指数复杂度算法。 在解析大型文件或数据集时这是一个问题吗?是否有正则表达式的替代方法可以有效地从数据中提取模式?
答案 0 :(得分:1)
取决于你想做什么。
通常,使用执行任务所需的最简单工具。
我想, in
会比正则表达式更有效,但不允许使用通配符,重复等。如果您要查找的模式全部在一行上,则可以在一行上搜索一次,在下一行之前处理每一个(并将其从内存中取出)。如果您正在寻找字符串或结尾的开头,则使用mystring.startswith()
或mystring.endswith()
- 这些效率更高。
您可以将数据拆分为更易于管理的块。
如果你想要多行搜索,它不会在开头或结尾,并包含通配符或重复...你可能会遇到正则表达式。