2013-05-29 2 views
1

"[email protected]"과 같은 결과를 얻고 싶지만 일치하는 표현식으로 "com"만 표시합니다. findall을 사용하여 완전한 일치 표현식을 얻으려면 어떻게해야합니까?python에서 findall 모듈

>>> 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

최종 캡처 마지막 그룹에서 괄호, 그 comorg입니다. 일치하는 문자열이 아니라 단지 그룹화 된 부분으로 저장되도록,

[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