.net 正则表达式匹配以@开头的单词

qybjjes1  于 2023-03-31  发布在  .NET
关注(0)|答案(4)|浏览(136)

我正在尝试开发一些正则表达式来查找所有以@开头的单词:
我认为\@\w+可以做到这一点,但这也匹配了其中包含@的单词
例如@help me@ ple@se @now
匹配Index: 0 Length 5, Index: 13 Length 3, Index: 17 Length 4
这不应该在索引13处匹配,不是吗?

7y4bm7vi

7y4bm7vi1#

使用\B@\w+(非字边界)。
例如:

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

输出:

@help
@now

顺便说一句,你不需要逃避@
http://ideone.com/nsT015

to94eoyn

to94eoyn2#

如何看待消极的背后:

(?<!\w)@\w+
o7jaxewo

o7jaxewo3#

那么非Regex方法呢?
C#版本:

string input = "word1 word2 @word3 ";
string[] resultWords = input.Split(' ').ToList().Where(x => x.Trim().StartsWith("@")).ToArray();

VB.NET版本:

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

iqjalb3h4#

尝试使用

(?<=^|\s)@\w+

不记得c#是否允许在look behind中交替
RegExr

相关问题