正则表达式 - 在两个字符串PHP之间找到一个字符串

时间:2017-08-25 16:05:35

标签: regex

我想在此字符串中返回邮件: ezeze smtp.mailfrom=mymail@gmail.com; rerer 我应该如何在preg_match中编写我的正则表达式来查找邮件?

谢谢:)

2 个答案:

答案 0 :(得分:0)

你可以试试这个正则表达式:

(?<=mailfrom=)[^;]+(?=;)

(?<=mailfrom=) // assert 'mailfrom=' on the left
[^;]+          // 1 or more characters not ';'
(?=;)          // assert ';' on the right

Demo

答案 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