次のパターンを使用できます。
/u/\w*
/u/
これは、0 個以上の文字、数字、またはアンダースコアが後に続く文字列と一致します。文字列がこのパターンのみで構成されていることを確認するには、次のように開始 ( ) アンカー^
と終了 ( $
) アンカーを使用します。
^/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