我使用以下正则表达式从电子邮件地址获取域名:
re.findall('@(.+?)',str)
,它没有给我预期的结果。
我有正确的正则表达式:re.findall('@(\w.+)',str)
。
请解释模式之间的区别。
答案 0 :(得分:0)
主要区别在于它与实际域匹配的方式。
.
匹配任何非换行符。+
匹配前一个元素(.
)一次或多次。?
在这种情况下,就像在转发器之后,它使它“懒惰”。没有它,它将是“贪婪的”,尽可能多地匹配。当转发器“懒惰”时,它会尽可能多地匹配。\w
匹配任何“单词字符”(通常按字母顺序排列的大写和小写字母以及下划线)。.
匹配任何非换行符。+
重复前一个元素(.
)一次或多次。因为没有?
,所以它会尽可能多地匹配。这应该概述两者之间的差异。如果您有想要匹配或不匹配的示例,并将它们添加到原始帖子,我可以帮助进一步解释为什么一个有效,而另一个不适用于这些情况。