提到PHP正则表达式(@name)

时间:2017-11-09 16:54:04

标签: php regex

我已经在这个上破坏了我的球,而且我一直在尝试无数的正则表达式,但似乎无法做到这一点。 (我对正则表达式没有经验)。

以下情况正在进行中,让我们以此基本句子为例;

I recently saw @john-doe riding a bike, did you noticed that too @foo-bar?

这里的诀窍是只从字符串中获取@john-doe@foo-bar部分,最好是在数组中:

$arr = [
   '@john-doe',
   '@foo-bar'
];

有人可以帮助我走上正轨吗?

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式(\@(?P<name>[a-zA-Z\-\_]+))

<?php
$matches = [];
$text = "I recently saw @john-doe riding a bike, did you noticed that too @foo-bar?";
preg_match_all ("(\@(?P<names>[a-zA-Z\-\_]+))" ,$text, $matches);
var_dump($matches['names']);

在这个例子中,我使用?P<names>命名捕获组,它更容易获得。
我为你制作了一个Regex101,还有一个用于测试的PHP沙箱 https://regex101.com/r/ZFWvCG/1
http://sandbox.onlinephpfunctions.com/code/1d04ce64a2a290994bf0effd7cf8f0039f20277b