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

提到PHP正则表达式(@name),php,regex,Php,Regex,我在这件事上做得很卖力,我试了很多正则表达式,但似乎都做不好。(我在正则表达式方面没有那么丰富的经验) 下面的情况正在发生,让我们以这个基本句子为例 我最近看到@johndoe骑自行车,你有没有注意到@foobar? 这里的技巧是只从字符串中获取@john doe和@foo bar部分,最好是在数组中: $arr = [ '@john-doe', '@foo-bar' ]; 有人能帮我找到正确的方法吗?你可以使用这个正则表达式(\@(?p[a-zA-Z\-\\\\\\\\\+):

我在这件事上做得很卖力,我试了很多正则表达式,但似乎都做不好。(我在正则表达式方面没有那么丰富的经验)

下面的情况正在发生,让我们以这个基本句子为例

我最近看到@johndoe骑自行车,你有没有注意到@foobar?

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

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

有人能帮我找到正确的方法吗?

你可以使用这个正则表达式
(\@(?p[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[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']);


您具体尝试过哪些正则表达式?粘贴它们,以便在什么时候可以找出您尝试的错误。另外,“提及”允许的字符是什么?
/@[\w-]+/
应该做这项工作您做了哪些尝试?看起来像一个简单的regexUse preg_match__allAnd,这就是你的问题。Preg_match适用于一个项目。比赛前一切都是。。不,你可以猜到。你具体试过哪些正则表达式?粘贴它们,以便在什么时候可以找出您尝试的错误。另外,“提及”允许的字符是什么?
/@[\w-]+/
应该做这项工作您做了哪些尝试?看起来像一个简单的regexUse preg_match__allAnd,这就是你的问题。Preg_match适用于一个项目。比赛前一切都是。。不,你可以猜得到。
[\w-]
应该足够了。@ctwheels可能有很多路通往罗马。你的解决方案很有魅力,@Nicolas@丹尼斯明克很高兴我能帮上忙@Nicolas如果我想避免电子邮件怎么办?如果我写test@mymail.com它将mymail检测为name
[\w-]
应该就足够了。@ctwheels可能有很多路通往罗马。你的解决方案就像一个魔咒,@Nicolas@丹尼斯明克很高兴我能帮上忙@Nicolas如果我想避免电子邮件怎么办?如果我写test@mymail.com它将mymail检测为名称