«\ S +? @ \ S +» и «\ S + @ \ S +» дают одинаковые выходные данные в регулярных выражениях - PullRequest
0 голосов
/ 26 января 2019

Следующие два регулярных выражения дают одинаковый вывод в 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 голосов
/ 26 января 2019

+?не жадный, как ожидалось.См. 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']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...