我需要知道提及的工作方式,如何在文本中找到提及。 我们必须首先找到&#39; <&#39; 的最后一个而不是@&#34; ^ [a-zA-Z0-9 _,] + $&# 34;
感谢您分享您的经验
string comment=" hi @fri.tara3^";
mention is : "@fri.tara3"
答案 0 :(得分:2)
看起来非常适合正则表达式。有多种方法可以解决这个问题。
这是最简单的一个:
(?<mention>@[a-zA-Z0-9_.]+)[^a-zA-Z0-9_.]
[^ ... ]
做否定位(?<mention> ... )
声明一个明确的组来捕获提及,而不是在提及后立即包含不匹配的字符。清洁模式将使用名为look-ahead的功能:
@[a-zA-Z0-9_.]+?(?![a-zA-Z0-9_.])
+?
添加来支持多个提及查找。这可确保匹配提及尽可能短。前瞻性有点鲜为人知,如果模式变得太长,可能会变得很难读。但它是一个有用的工具。
使用C#的完整示例:
string comment = "hi @fri.tara3^ @hjh not a mention @someone";
const String pattern = "@[a-zA-Z0-9_.]+?(?![a-zA-Z0-9_.])";
var matches = Regex.Matches(comment, pattern);
for (int i = 0; i < matches.Count; i++)
{
Console.WriteLine(matches[i].Value);
}