python的"re.compile"有什么作用?

man*_*ngo 14 python regex

当你为原始字符串和通过re.compile传递的字符串运行re.match时,后者有何不同?通过re.compile传递的字符串发生了什么变化?

小智 8

它将正则表达式编译为正则表达式对象。查看文档以获取更多信息。

  • @IceArdor——虽然你在技术上是正确的,但 `re` 实际上在一个 dict 中缓存了一堆正则表达式——所以,如果你不显式编译它们,`re` 将在第一次调用时编译正则表达式并使用编译版本在后续调用效率。如果您的程序使用了多个“re._MAXCACHE”正则表达式导致缓存被清除和重建,您只会看到显着的加速。我认为您应该编译正则表达式以提高代码清晰度,而不是速度。 (3认同)
  • re.match(pattern, searchstring) 从模式内部构建一个 PatternObject,然后将搜索字符串应用于 PatternObject。如果要在多个搜索字符串上运行相同的模式,则应该将该模式编译为 PatternObject 以消除多余的工作。底线:您的代码将执行相同的操作,但运行速度更快。 (2认同)