我正在尝试创建一个正则表达式模式,以获取位于以下@和之间的文本,。例如,文本是这样的:
Hello @bob, my name is @jack,
我想做的是从字符串中取出名称bob
和jack
。阅读其他地方,我相信regex(PHP)是最好的选择。我已经创建了自己的模式,但它不起作用。我的密码如下。注释变量包含文本。
$pat = '/'@',/';
preg_match($pat, $comment, $matches);
echo $matches[1];
如有任何帮助,我们将不胜感激。
您的正则表达式不起作用,因为它只匹配@,
序列。你想要介于两者之间的东西。
您可以使用以下正则表达式:
(?<=@)[^,]+
参见regex演示
Regex解释:
(?<=@)
-查看后面,检查在要匹配的文本之前是否有@
符号[^,]+
-与逗号以外的1个或多个字符匹配的否定字符类
IDEONE演示:
$re = "/(?<=@)[^,]+/";
$str = "Hello @bob, my name is @jack,";
preg_match_all($re, $str, $matches);
print_r($matches);