re.search()或'in',re.match()或startswith()?

时间:2018-10-21 15:01:22

标签: python python-3.x python-2.7

我正在学习如何在Python中使用re库,这个问题浮现在脑海。如果这听起来很愚蠢,请原谅我。我是这个新手。 :)

this answer起,

  • re.search-在字符串中的任意位置查找内容
  • re.match-在字符串的开头找到一些内容

现在我有了以下代码:

from re import search
str = "Yay, I am on StackOverflow. I am overjoyed!"
if search('am',str): # not considering regex
    print('True') # returns True
if 'am' in str:
    print('True') # returns True

这:

from re import match
str = "Yay, I am on Stack Overflow. I am overjoyed!"
if match('Yay',str): # not considering regex
    print('True') # prints True
if str.startswith('Yay'):
    print('True') # prints True

所以现在我的问题是,当我做类似的事情(不考虑正则表达式)(例如从网页中获取内容并查找其内容)时,应该使用哪一个。我应该使用上述内置函数还是标准re库?哪一个可以使代码更优化/更高效?

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

正则表达式通常用于复杂的匹配,搜索和替换操作,而诸如“ in”之类的内置关键字通常用于简单的操作,例如用一个单词替换另一个单词。通常,首选“ in”关键字。在性能方面,“ in”关键字的使用速度更快,但是当您遇到可以使用“ in”关键字的情况时,Regex提供了更为优雅的解决方案,而不是使用Regex键入很多“ if”语句。

当您从网页上获取内容并在内容中找到内容时,上述编解码器也适用。

希望这会有所帮助。