我有以下代码:
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/