PHP正则表达式:由非字母数字包围的字母数字。

3
我想获取所有的

@something

被任何非字母数字字符或空格所包含的实例。

我尝试过

[^A-Za-z0-9\s]@(\S)[^A-Za-z0-9]

但它会在单词后包含空格。

如果有帮助,我将不胜感激,谢谢。

编辑: 为了清楚起见,我想从中找到匹配项

行开头 @word1 something @word2,@word3

所有的 '@word1'、'@word2'、'@word3'


@\w+ 不行吗? - slier
谢谢!那似乎有效!原来非常简单 :-) - KillerFrca
2个回答

1

这是你想要的吗?

@\w+

演示

preg_match_all('#(@\w+)#', 'Line start @word1 something @word2,@word3', $matches);
print_r($matches[1]);

从Madbreak的评论中得知,要排除任何字符前面的@,请改用以下方法。
 (?<!\w)@\w+(?=\b)

演示


@KillerFrca 这将匹配由字母数字字符前导的 @,而您的问题指出这是不可接受的。 - Madbreaks
1
@Madbreaks,我添加了一个查找断言来排除任何字母数字字符之前的 @ - slier

0

这个

preg_match_all('/[^@]*@(\S*)/', 'blabla @something1 blabla @something2 blabla', $matches);
print_r($matches[1]);

打印

Array
(
    [0] => something1
    [1] => something2
)

[^@] 将匹配字母数字字符。 - Madbreaks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接