您可以使用以下模式:
/u/\w*
它将匹配/u/
后跟零个或多个字母、数字或下划线的字符串。要确保字符串仅包含此模式,请使用 start ( ^
) 和 end ( $
) 锚点,如下所示:
^/u/\w*$
例如:
string result = Regex.Match(input, @"^/u/\w*$").Value;
如果您尝试对 HTML 进行一些特殊的解析,恐怕正则表达式是一个非常糟糕的选择。您确实应该首先找到一些正确解析文档的方法。然而,这是一个非常粗略的模式,如果它恰好在href
属性内部,它将忽略这个序列(它还假设属性值将被引号括起来):
(?<!href="[^"]*)/u/\w*
例如:
string input = @"<a href=""http://x/u/foo"">/u/bar</a>";
string pattern = @"(?<!href=""[^""]+)/u/\w*";
string Regex.Match(input, pattern).Value; // will match /u/bar but not /u/foo
此模式将匹配任何前面没有单词字符(字母、数字或下划线)、引号或正斜杠的序列:
(?<![\w""/])/u/\w*
此示例显示如何使用它从字符串中获取所有匹配项:
var input = @"/u/username
/u/username this is
this/is/u/user <a href=""http://www.regex.com/u/something/"" />";
var pattern = @"(?<![\w""/])/u/\w*";
foreach(Match match in Regex.Matches(input, pattern))
{
System.Console.WriteLine(match.Value);
}
输出将我:
/u/username
/u/username