php - 正则表达式提取尖括号之间的字符串,并且尖括号之间恰好有一个@字符

标签 php regex

有谁知道如何匹配类似的东西

<<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="afdbefdb81ccc0c2" rel="noreferrer noopener nofollow">[email protected]</a>>

我尝试了这个正则表达式

\<(.?*)\>

但这也匹配 <sddsds>我希望它与 <> 内的位置匹配是一封电子邮件 @标志。

最佳答案

你可以使用

<([^<>@]+@[^<>@]+)>

请参阅regex demo详细信息:

  • < - 一个<字符
  • ([^<>@]+@[^<>@]+) - 第 1 组:除 < 之外的任何一个或多个字符, >@ ,一个@ char,然后再输入除 < 之外的任何一个或多个字符, >@
  • > - 一个>字符。

请参阅PHP demo :

$str = "<<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2e5a6e5a004d4143" rel="noreferrer noopener nofollow">[email protected]</a>>\n<tatacom>\n<t@ata@com>";
$re = '/<([^<>@]+@[^<>@]+)>/';
if (preg_match_all($re, $str, $matches)) {
    print_r($matches[1]);
}
// => Array( [0] => <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="96e2d6e2b8f5f9fb" rel="noreferrer noopener nofollow">[email protected]</a> )

关于php - 正则表达式提取尖括号之间的字符串,并且尖括号之间恰好有一个@字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68491467/

相关文章:

php - 通过 php 脚本在 mysqldump 中出现意外的文件结尾错误

php - PDO 即使没有绑定(bind)任何参数仍然会得到结果

php - 如何从按钮中获取值

php - 如何在 Visual Studio Code 中初始化 PHP 构造函数字段

mysql - Regexp 正则表达式,用于从 SELECT 查询中选择特定字符串模式

Python 正则表达式接受除 <>%;$ 之外的所有字符

java - 正则表达式模式表达式

c# - 正则表达式匹配一定数量的字符并允许中间有空格

python - 在Python中为复杂字符串设置正则表达式

php - mysql:存储任意数据