다음 정규식이 있습니다.
(?:^(?:X-Rcpt-To|X-MDRcpt-To|To): (?:[\<\'\"])?(.*?)(?:[\>\'\"])?$)
그리고 다음 텍스트 블록 :
To: <[email protected]>
여기에 있어야하는 이메일을 캡처합니다 : https://regex101.com/r/gQ1bV5/1
그러나 내 코드 내에서 이것을 구현할 때 >
이메일 주소 끝에서 등을 캡처 합니다. (복귀 [email protected]>
)
public string FindRealEmail()
{
var filterRegex = new Regex("(?:^(?:X-Rcpt-To|X-MDRcpt-To|To): (?:[\\<\\\'\\\"])?(.*?)(?:[\\>\\\'\\\"])?$)", RegexOptions.Multiline);
var email = (filterRegex.IsMatch(Body) ? filterRegex.Match(Body).Groups[1].Value : EmailAddress).Replace("\r", "");
return email;
}
문제는 실제로 마지막 비 캡처 그룹 때문이 아니라 줄 끝 때문입니다. 끝에서 줄 바꿈을 처리하면>가 캡처되지 않습니다.
(?:^(?:X-Rcpt-To|X-MDRcpt-To|To): (?:[\<\'\"])?(.*?)(?:[\>\'\"])?\r?$)
특정 섹션을 캡처 할 필요가없는 경우 괄호를 생략 할 수 있습니다. <
, '
& "
문자도 이스케이프 할 필요가 없습니다 .
^(?:X-Rcpt-To|X-MDRcpt-To|To): [<'"]?(.*?)[>'"]?\r?$
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다