哪个更有效?长字符串或列表上的正则表达式

sha*_*awn 2 python regex

我正在使用正则表达式来查找匹配项。在长字符串或分解成列表的相同字符串上使用它是否更有效?

例如

mystring = "asdfl;jkasdfj;ldj;lj;dlskjfasdfjkl; ;lj ;lf ak;lkjf al;kjdlkjsdl;fkja;dlkjf a;lsdf"
Run Code Online (Sandbox Code Playgroud)

或者

mylist = ["asdfl;jkasdfj;ldj;lj;dlskjfasdfjkl;",";lj", ";lf ak;lkjf","al;kjdlkjsdl;fkja;dlkjf a;lsdf"] 
Run Code Online (Sandbox Code Playgroud)

Raf*_*ler 5

由于re模块的编写方式,更简单、更有效的方法是在字符串上使用正则表达式。这并不是绝对更快,但效率更高,因为它更容易编码、更容易维护,并且可以更好地利用 Python 附带的电池。

re针对长字符串而不是列表进行了优化。如果您要在该字符串列表上使用正则表达式,您最终会调用re.

基本规则,除非必要,否则不要进行优化,因为现有的优化方式太慢了。

  • 一般来说,这对于优化来说是不错的建议,但最好考虑正则表达式匹配的计算复杂性以获得一个想法。例如,如果重新匹配对输入的大小呈指数增长,那么最好将其分解。但这不是真的,请参阅下面我的回答。 (2认同)
  • @KarlR 因此为什么我说 `re` 针对长字符串而不是短字符串列表进行了优化。更不用说复杂性并不是一切,实际考虑(在这种情况下)也同样重要。 (2认同)