我正在尝试开发一些正则表达式来查找所有以@开头的单词:我认为\@\w+可以做到这一点,但这也匹配了其中包含@的单词例如@help me@ ple@se @now匹配Index: 0 Length 5, Index: 13 Length 3, Index: 17 Length 4这不应该在索引13处匹配,不是吗?
\@\w+
@help me@ ple@se @now
Index: 0 Length 5, Index: 13 Length 3, Index: 17 Length 4
7y4bm7vi1#
使用\B@\w+(非字边界)。例如:
\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
@
to94eoyn2#
如何看待消极的背后:
(?<!\w)@\w+
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
iqjalb3h4#
尝试使用
(?<=^|\s)@\w+
不记得c#是否允许在look behind中交替RegExr
4条答案
按热度按时间7y4bm7vi1#
使用
\B@\w+
(非字边界)。例如:
输出:
顺便说一句,你不需要逃避
@
。http://ideone.com/nsT015
to94eoyn2#
如何看待消极的背后:
o7jaxewo3#
那么非Regex方法呢?
C#版本:
VB.NET版本:
iqjalb3h4#
尝试使用
不记得c#是否允许在look behind中交替
RegExr