正则表达式从电子邮件获取域名

时间:2016-08-28 13:37:32

标签: regex

我使用以下正则表达式从电子邮件地址获取域名: re.findall('@(.+?)',str),它没有给我预期的结果。

我有正确的正则表达式:re.findall('@(\w.+)',str)

请解释模式之间的区别。

1 个答案:

答案 0 :(得分:0)

主要区别在于它与实际域匹配的方式。

。+?

  • .匹配任何非换行符。
  • +匹配前一个元素(.)一次或多次。
  • ?在这种情况下,就像在转发器之后,它使它“懒惰”。没有它,它将是“贪婪的”,尽可能多地匹配。当转发器“懒惰”时,它会尽可能多地匹配。

\瓦特+

  • \w匹配任何“单词字符”(通常按字母顺序排列的大写和小写字母以及下划线)。
  • .匹配任何非换行符。
  • +重复前一个元素(.)一次或多次。因为没有?,所以它会尽可能多地匹配。

这应该概述两者之间的差异。如果您有想要匹配或不匹配的示例,并将它们添加到原始帖子,我可以帮助进一步解释为什么一个有效,而另一个不适用于这些情况。