以下两个正则表达式在python 3.7中给出相同的输出。 “ +?”应该是非贪婪的
re.findall("\S+?@\S+?","From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008")
re.findall("\S+@\S+","From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008")
这两个都提供与以下相同的输出:
['stephen.marquard@uct.ac.za']
答案 0 :(得分:0)
+?不符合预期。请参阅https://regex101.com/r/DM4voj/1
如果将两个命令都复制粘贴到外壳程序或程序中,则只会得到最后一个命令的输出。尝试同时使用两种打印语句。您应该会得到所需的答案。
import re
print(re.findall("\S+?@\S+?","From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008"))
print(re.findall("\S+@\S+","From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008"))
结果将如下所示
['stephen.marquard@u']
['stephen.marquard@uct.ac.za']