1

我正在学习 Python,需要格式化从 IMAP 收到的“发件人”字段。我尝试使用str.find()and str.strip(),也使用正则表达式。使用 find() 等,我的函数运行速度比使用 re 快很多(我计时了)。那么,什么时候使用re 更好呢?有没有人有任何与此相关的好链接/文章?Python文档显然没有提到...

4

2 回答 2

10

find只匹配一个精确的字符序列,而正则表达式匹配一个模式。自然,只寻找精确序列会更快(即使您的正则表达式模式也是精确序列,仍然存在一些开销)。

由于上述原因,find如果您知道确切的顺序,则应该使用,如果不知道,则应该使用正则表达式(或其他东西)。您应该使用的确切方法实际上取决于您所面临问题的复杂性。

附带说明一下,pythonre模块提供了一种compile方法,如果您要重复使用它,则允许您预编译正则表达式。如果您多次使用相同的模式,这可以大大提高速度。

于 2012-09-20T13:16:53.330 回答
3

如果你打算做一些复杂的事情,你应该使用re. 它比使用字符串方法更具可扩展性。

字符串方法很适合做一些简单的事情,不值得为正则表达式烦恼。

所以,这取决于你在做什么,但通常你应该使用正则表达式,因为它们更强大。

于 2012-09-20T13:17:16.143 回答