创建正则表达式模式以获取@和之间的文本,


Create a regex pattern to obtain text between @ and ,

我正在尝试创建一个正则表达式模式,以获取位于以下@和之间的文本,。例如,文本是这样的:

Hello @bob, my name is @jack, 

我想做的是从字符串中取出名称bobjack。阅读其他地方,我相信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);