我在php(preg_match_all)中使用正则表达式时遇到了一些麻烦。
我使用以下代码查找由<>:封装的电子邮件,即:
preg_match_all("<[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})>:", $body,$matches);
由于某些原因,PHP在冒号处爆炸,出现以下错误:
警告:preg_match_all()[function.preg-match-all]:未知的修饰符':'in ...
任何帮助都会非常感激,因为我不是正则表达的大师,而且我只是脱毛了。
答案 0 :(得分:7)
您需要使用分隔符EX:
preg_match_all('/<[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})>:/', $body,$matches);
请参阅我在两端添加的/
,告诉PHP正则表达式的开始和结束位置。
答案 1 :(得分:0)
您可以在开始和结束时使用{strong>不需要 /
的{{3}}
$pattern = "<[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})>:";
$matches = Pattern::of($pattern)->match($body)->all();