0

タグ付けされたFacebookのユーザー名(@username1 @user.name、@user_nameなど)に一致する正規表現(C#)を構築しようとしています。Facebook のユーザー名には、英数字、ダッシュ、ピリオド、およびアンダースコア文字を使用できると思います。

これは英数字のみに一致しますが、ピリオド、ダッシュ、またはアンダースコアも受け入れるものが必要です。

MatchCollection results = Regex.Matches(text, "@\\w+");

どんな助けでも、大歓迎です、ありがとう!

4

3 に答える 3

1

これを試して:

MatchCollection results = Regex.Matches(text, @"@[\w.-]+");

ただし、これは電子メール アドレスのドメイン部分にも一致します (仕様ではドットが許可されているため)。それが望ましくない場合は、負の後読みアサーションを追加して、 の前にスペース以外の文字がないことを確認できます@

MatchCollection results = Regex.Matches(text, @"(?<!\S)@[\w.-]+");
于 2012-11-25T17:23:03.627 に答える
1

「完全なリスト」バージョンを使用します。

MatchCollection results = Regex.Matches(txt, @"(?:^|(?<=\s))@[a-zA-Z0-9_.-]+(?=\s|$)");

または短いバージョン ( \w= [a-zA-Z0-9_])

MatchCollection results = Regex.Matches(txt, @"(?:^|(?<=\s))@[\w.-]+(?=\s|$)");
于 2012-11-25T17:38:18.210 に答える
1

これを行うこともできます

List<string> tagedNames=Regex.Matches(text,@"(?<=(\s|^))@[\w.-]+")
                             .Cast<Match>()
                             .Select(x=>x.Value)
                             .ToList<string>();
于 2012-11-25T17:46:03.740 に答える