“ \ S +?@ \ S +”和“ \ S + @ \ S +”在正则表达式中给出相同的输出

时间:2019-01-26 12:01:48

标签: regex

以下两个正则表达式在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']

1 个答案:

答案 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']