在特定子字符串和分号之间查找电子邮件地址
Posted
技术标签:
【中文标题】在特定子字符串和分号之间查找电子邮件地址【英文标题】:Find email address between specific substring and semicolon 【发布时间】:2018-02-03 17:48:36 【问题描述】:我想从这个字符串中提取电子邮件地址:
ezeze smtp.mailfrom=mymail@gmail.com; rerer
我应该如何在preg_match
中编写我的正则表达式来查找电子邮件?
【问题讨论】:
【参考方案1】:你可以试试这个正则表达式模式:
(?<=mailfrom=)[^;]+(?=;)
(?<=mailfrom=) // assert 'mailfrom=' on the left
[^;]+ // 1 or more characters not ';'
(?=;) // assert ';' on the right
Demo
【讨论】:
【参考方案2】:不需要任何捕获组或环视(这会减慢正则表达式引擎的速度)。
查找/匹配起始标记子字符串,然后用\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
【讨论】:
以上是关于在特定子字符串和分号之间查找电子邮件地址的主要内容,如果未能解决你的问题,请参考以下文章