C# 要匹配以开头的单词的正则表达式@

C# 要匹配以开头的单词的正则表达式@,c#,.net,regex,vb.net,C#,.net,Regex,Vb.net,我正在尝试开发一些正则表达式来查找所有以@开头的单词: 我原以为\@\w+就可以了,但这也匹配了包含@的单词 e、 g。 @help me@ple@se@now 在索引:0长度5、索引:13长度3、索引:17长度4处匹配 这在索引13中不应该匹配,是吗?后面的负面观察如何: (?<!\w)@\w+ (?那么非正则表达式方法呢 C版本: VB.NET版本: Dim input As String = "word1 word2 @word3 " Dim resultWords() As St

我正在尝试开发一些正则表达式来查找所有以@开头的单词:

我原以为
\@\w+
就可以了,但这也匹配了包含@的单词

e、 g。
@help me@ple@se@now

索引:0长度5、索引:13长度3、索引:17长度4处匹配


这在索引13中不应该匹配,是吗?

后面的负面观察如何:

(?<!\w)@\w+

(?那么非正则表达式方法呢

C版本:

VB.NET版本:

Dim input As String = "word1 word2 @word3 "
Dim resultWords() As String = input.Split(" "c).ToList().Where(Function(x) x.Trim().StartsWith("@")).ToArray
试用

(?<=^|\s)@\w+
(?使用
\B@\w+
(非单词边界)

例如:

string pattern = @"\B@\w+";
foreach (var match in Regex.Matches(@"@help me@ ple@se @now", pattern))
    Console.WriteLine(match);
输出:

@help
@now
顺便说一句,您不需要转义
@


谢谢Marc,他只接了电话ple@se however@MattWilko添加了一个“行的开始”;p现在可以拾取
索引:0长度5,索引:13长度3
@MattWilko第三次幸运?是的,谢谢+1,但我将接受@falsetru的答案,因为它很简单是的,是的,这很有效;后面的负面表情可能是(主观上)更简单,但是:如果我注意到你更新的答案,我就不会发布那篇文章了。啊,很棒的答案+1。消除了后面的看。讽刺的是,“你不需要逃避@”,你的测试字符串也不需要前面的
@
。这不会有什么区别。:)我花了一秒钟才弄明白非单词边界在这里是如何工作的;玩得很好
@help
@now