.NET 정규 표현식 엔진을 마음대로 사용할 수있는 경우 (?:.(?=\[email protected])|(?<[email protected]\S+).)
을 검색하고 모든 일치 항목을 dot
으로 바꿔서 단일 정규식에서 수행 할 수 있습니다.
검색 \.(?=\[email protected])
과 dot
로 교체 :
PHP에서
, 당신은 반복적으로/두 단계를해야 할 것이 전에 발생 이메일 주소의 모든 점을 대체 할
$subject = preg_replace('/\.(?=\[email protected])/', ' dot ', $subject);
@
. 그런 다음 (@\S+)\.
을 검색하고 \1 dot
으로 바꿉니다. 더 이상 일치가 없을 때까지 이것을 반복하십시오.
뭔가
while (preg_match('/(@\S+)\./', $subject)) {
$subject = preg_replace('/(@\S+)\./', '\1 dot ', $subject);
}
처럼이는
@
후 이메일 주소 안의 점과 일치하지만, PHP의 정규식 엔진이 무한 lookbehind를 지원하지 않기 때문에, 나는 문자열에 여러 번 정규식을 다시 적용해야
@
이후의 최대 도트 수입니다. 예를 들어
@foo.bar.com
문자열의 경우
@foo.bar.
과 일치하고
@foo.bar dot
으로 바뀝니다. 그런 다음 다음 실행에서
@foo.
을
@foo dot
으로 바꿉니다.