2013-05-29 2 views
1

Я хочу получить вывод как «[email protected]», но он отображает только «com» ​​в качестве согласованного выражения. Как получить полное соответствие выражению с помощью findall?findall module in re in python

>>> pat = re.compile('[a-zA-Z0-9][\w\.]{4}[\w\.]*@[a-zA-Z0-9][a-zA-Z0-9]*[.](com|co.in|org|edu)') 
>>> pat.findall('[email protected]') 
['com'] 
>>> pat.findall('[email protected] [email protected]') 
['com', 'org'] 

Required Output:- 
['[email protected]'] 
['[email protected]', '[email protected]'] 

ответ

1

в скобках в конце захвата только последняя группа, которая com и org.

Измените регулярное выражение:

[a-zA-Z0-9][\w\.]{4}[\w\.]*@[a-zA-Z0-9]+[.](?:com|co\.in|org|edu) 
              ^^ 

Это гарантирует, что ни одна из групп не совпадают, так что строка соответствия хранится вместо только сгруппированных частей.

Кроме того, я не уверен, почему вы положили все эти запятые. Я удалил их, и регулярное выражение все еще работает.

+1

не ускользает от точки в «co.in» также необходимо? – Dropout

+0

@ Dropout правильно указал, спасибо :) – Jerry

+0

+1 сейчас;) приветствия! – Dropout