python';s";重新编译“;做
当您为原始字符串和通过re.compile传递的字符串运行re.match时,后者有什么不同?通过re.compile传递的字符串发生了什么情况?它将正则表达式编译为正则表达式对象。查看文档以获取更多信息。首先查看文档……这个问题类似于这个问题:即使您被降了分数(-1比155),我认为这是一个好问题。Stackoverflow python社区有一个习惯,就是“先投票后理解问题”。match(pattern,searchstring)从模式内部构建PatternObject,然后将searchstring应用于PatternObject。如果要在多个SearchString上运行相同的模式,则应将该模式编译为PatternObject以消除冗余工作。一句话:您的代码将执行相同的操作,但会运行得更快。@Icardor——虽然您在技术上是正确的,python';s";重新编译“;做,python,regex,Python,Regex,当您为原始字符串和通过re.compile传递的字符串运行re.match时,后者有什么不同?通过re.compile传递的字符串发生了什么情况?它将正则表达式编译为正则表达式对象。查看文档以获取更多信息。首先查看文档……这个问题类似于这个问题:即使您被降了分数(-1比155),我认为这是一个好问题。Stackoverflow python社区有一个习惯,就是“先投票后理解问题”。match(pattern,searchstring)从模式内部构建PatternObject,然后将searchs
re
实际上在dict中缓存了一堆正则表达式——因此,如果您不显式编译它们,re
将在第一次调用时编译正则表达式,并在后续调用时使用编译后的版本以提高效率。只有当程序使用超过re.\u MAXCACHE
正则表达式导致缓存被清除和重建时,才会看到显著的加速。我认为编译正则表达式是为了代码清晰,而不是为了速度。谢谢你的澄清。我的re._MAXCACHE=100,我使用了大约1000个模式,所以re的内部缓存没有帮助。离题:我总是在选择编译模式对象的变量名时遇到问题。有什么建议吗?