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