我需要知道提及是如何工作的,应该如何在文本中找到提及。我们必须找到'@'的第一个,而不是@"^[a-zA-Z0-9_,]+$"
感谢您分享您的经验
string comment=" hi @fri.tara3^";
mention is : "@fri.tara3"
看起来很适合正则表达式。有多种方法可以解决这个问题。
这是最简单的一个:
(?<mention>@[a-zA-Z0-9_.]+)[^a-zA-Z0-9_.]
[^ ... ]
做否定位(?<mention> ... )
声明一个显式组来捕获提及,而不包括紧跟在提及之后的不匹配字符。更简洁的模式将使用称为前瞻的功能:
@[a-zA-Z0-9_.]+?(?![a-zA-Z0-9_.])
+?
。这确保匹配的提及尽可能短。Lookaheads 鲜为人知,如果模式变得太长,阅读起来可能会很痛苦。但这是一个有用的工具。
使用 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);
}