我想在此字符串中返回邮件:
ezeze smtp.mailfrom=mymail@gmail.com; rerer
我应该如何在preg_match
中编写我的正则表达式来查找邮件?
谢谢:)
答案 0 :(得分:0)
你可以试试这个正则表达式:
(?<=mailfrom=)[^;]+(?=;)
(?<=mailfrom=) // assert 'mailfrom=' on the left
[^;]+ // 1 or more characters not ';'
(?=;) // assert ';' on the right
答案 1 :(得分:0)
不需要任何捕获组或环视(这会降低正则表达式引擎的速度)。
查找/匹配起始标记子串,然后用\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