2017-12-22 14 views
0

내부 추출 단어 난 그냥 <> 괄호에있는 이메일 주소가 필요정규식 - < > 괄호

John Smith <[email protected]>

같은 문자열에서 이메일 주소를 추출하기 위해 노력하고 있습니다.

여기 내가 지금까지 해봤지만, 정규식에별로 좋지 않아서 작동하지 않는 것 같습니다. 아무도 도와 줄 수 있습니까?

import re 
sender = str(message.sender) 
p = re.search(r"\<(\w+)\>", sender) 
logging.info(p.group(1)) 
+1

당신은 사용할 수 있습니다 :'re.search (R "<([^>] +)>", 보낸 사람)' – anubhava

+0

이 시도 만 이메일 (안 원한다면/<([^>]는 *)/ – JBone

+0

은'<>')을 수행 할 수 있습니다 @ anubhava의 정규식을'(? <=<)[^>) + (? =>)'로 수정하십시오. – ctwheels

답변

0

현재 당신의 정규식은 다음과 같습니다 "\<(\w+)\>" 당신은 실제로 <>을 탈출 할 필요가 없습니다, 그래서됩니다 : "<(\w+)>" \w 일치하는 문자, 숫자 및 underschore '_'합니다. 전자 메일 주소에는 다른 문자도 있습니다.

당신은 두 가지 옵션이 있습니다 : 하나 그냥 "<(.*)>" 같은 정규식으로 <> 제품 내부를 그대로 사용하거나 실제로 전자 메일 주소를 구문 분석합니다. .

가에 대한 간단한 정규식은 공백이 아닌 문자 다음에 @ 다음 "<\[email protected]\S+>" (공백이 아닌 문자 것

더 일반적으로 사용되는 문자에 자신을 제한, 우리가 쓸 수 있습니다 : "<[a-zA-Z0-9+_.-][email protected][a-zA-Z0-9.-]+>를이 여전히 불법 특정 허용 전자 메일 주소는 내가 매우 간단 그것을 유지했기 때문에

0

사용에게 부정적인 문자 집합 :.

import re 
s = "John Smith <[email protected]>" 
email = re.findall('<([^>])>', s)[0] 

모든 항목과 일치 이잖아하지 않는 > 문자이므로 대괄호 안에있는 모든 것.