我有以下代码:

preg_match('/@([^@ ]+)/', $image->caption->text, $matches)

我想基本上检测字符串中的提及。然而,现在的问题是它与电子邮件地址相混淆,因此它将电子邮件检测为提及,例如,如果我有 aksdjasd@yahoo.com 那么这算作匹配。我想我在这里想说的是@符号之前应该有一个空格。但是我如何把它放到这个正则表达式中?

编辑:
我还想检测字符串开头的@mentions

最佳答案



您可以使用lookbehind(根据下面OP的评论进行编辑):

preg_match('/(?<= |^)@[^@ ]+/', $image->caption->text, $matches);

Working Demo

关于php - 检测提及但不检测电子邮件的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23221732/

10-11 23:09
查看更多