使用正则表达式从推文中删除用户名

时间:2014-03-23 19:46:47

标签: php regex

我在这里收到推文:

RT @ChunautiSharma: "@AswalSurendra: @aartic02 @gulpanag ji campaigns in bus http://t.co/wl42nt5dds" 

我想废弃使用正则表达式存储在变量中的第一个用户名。 怎么做?

在上面的文字ChunautiSharma应该被删除

4 个答案:

答案 0 :(得分:0)

使用此正则表达式:

(?<=@)(\w+)

regex101.com

上的示例

答案 1 :(得分:0)

使用preg_match并将其存储到$m

preg_match("/@([^:]+)/", $twitter, $m);
print $m[1] ;

或使用preg_replace直接推送到$name

$name = preg_replace("/.*?@([^:]+):.*/", "$1", $twitter);

答案 2 :(得分:0)

使用preg_match。使用此正则表达式 -

@(.*?):

正则表达式的演示here

在PHP中测试 -

$regex = "/@(.*?):/";
$str    = 'RT @ChunautiSharma: "@AswalSurendra: @aartic02 @gulpanag ji campaigns in bus http://t.co/wl42nt5dds"';
if(preg_match($regex, $str, $match)){
    echo $match[1];
}
//OUTPUT - ChunautiSharma

答案 3 :(得分:0)

使用\K功能(此功能会从匹配​​结果中删除左侧的所有内容):

if (preg_match('~@\K[^\s:]+~', $str, $match))
    echo $match[0];