在特定子字符串和分号之间查找电子邮件地址
Find email address between specific substring and semicolon
我想从此字符串中提取电子邮件地址:
ezeze smtp.mailfrom=mymail@gmail.com; rerer
我应该如何在 preg_match
中编写我的正则表达式来查找电子邮件?
您可以试试这个正则表达式模式:
(?<=mailfrom=)[^;]+(?=;)
(?<=mailfrom=) // assert 'mailfrom=' on the left
[^;]+ // 1 or more characters not ';'
(?=;) // assert ';' on the right
不需要任何捕获组或环视(这会降低正则表达式引擎的速度)。
Find/Match 起始标记子串,然后“忘记”那些带有 \K
的字符,然后以贪婪的方式匹配所有非分号字符。
代码:(Demo)
$string = 'ezeze smtp.mailfrom=mymail@gmail.com; rerer';
echo preg_match(
'/smtp\.mailfrom=\K[^;]+/',
$string,
$match
)
? $match[0]
: 'no email address';
输出:
mymail@gmail.com
我想从此字符串中提取电子邮件地址:
ezeze smtp.mailfrom=mymail@gmail.com; rerer
我应该如何在 preg_match
中编写我的正则表达式来查找电子邮件?
您可以试试这个正则表达式模式:
(?<=mailfrom=)[^;]+(?=;)
(?<=mailfrom=) // assert 'mailfrom=' on the left
[^;]+ // 1 or more characters not ';'
(?=;) // assert ';' on the right
不需要任何捕获组或环视(这会降低正则表达式引擎的速度)。
Find/Match 起始标记子串,然后“忘记”那些带有 \K
的字符,然后以贪婪的方式匹配所有非分号字符。
代码:(Demo)
$string = 'ezeze smtp.mailfrom=mymail@gmail.com; rerer';
echo preg_match(
'/smtp\.mailfrom=\K[^;]+/',
$string,
$match
)
? $match[0]
: 'no email address';
输出:
mymail@gmail.com