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

时间:2015-06-23 13:09:52

标签: php regex

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

Hello @bob, my name is @jack, 

我想要做的是从字符串中获取名称bobjack。在其他地方读书我相信正则表达式(PHP)是最好的选择。我创建了自己的模式,但它不起作用。我的代码如下。 comment变量包含文本。

$pat = '/\@\,/';
preg_match($pat, $comment, $matches);
echo $matches[1];

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:4)

你的正则表达式不起作用,因为它只匹配@,序列。你想要一些介于两者之间的东西。

您可以使用以下正则表达式:

(?<=@)[^,]+

请参阅regex demo

正则表达式解释

  • (?<=@) - 在我们要与之匹配的文字之前检查是否有@符号的后视镜......
  • [^,]+ - 与逗号
  • 以外的1个或多个字符匹配的否定字符类

IDEONE demo

$re = "/(?<=@)[^,]+/"; 
$str = "Hello @bob, my name is @jack,"; 
preg_match_all($re, $str, $matches);
print_r($matches);