Помогите с регулярным выражением C # - PullRequest
0 голосов
/ 27 июля 2011

У меня есть строка ввода:

   access_token=f34b46f0f109d423sd4236af12d1bce7f10df108ec2183046b8f94641ebe&expires_in=0&user_id=37917395

Исходный код:

    Regex regex = new Regex("access_token=([^&]+)");
    MatchCollection matches;
    matches = regex.Matches(webBrowser1.SaveToString());
    if (matches.Count != 0 || access_token != string.Empty) {
        webBrowser1.IsEnabled = false;
        webBrowser1.IsHitTestVisible = false;
        if (access_token == string.Empty)
            access_token = matches[0].Value.Substring(13);

Я получил токен доступа, но я также должен соответствовать user_id. Как я могу получить это?

Пожалуйста, помогите мне, я не очень хорош в этом.

Ответы [ 2 ]

3 голосов
/ 27 июля 2011

Если ваша строка в input Это установит переменные accessToken и userId. Если совпадений нет, значения будут нулевыми.

Regex regex=new Regex("(?:access_token=(?<access>[^&]+))|(?:user_id=(?<userid>[^&]+))");
var accessToken=regex.Matches(input).OfType<Match>().Select(m=>m.Groups["access"]).Where(g=>g.Success).Select(g=>g.Value).FirstOrDefault();
var userId=regex.Matches(input).OfType<Match>().Select(m=>m.Groups["user_id"]).Where(g=>g.Success).Select(g=>g.Value).FirstOrDefault();

У меня обычно есть метод расширения, определенный для сокращения набора текста для меня

public static string GetGroup(this MatchCollection matches,string group name) {
    return matches.OfType<Match>().Select(m=>m.Groups[name]).Where(g=>g.Success).Select(g=>g.Value).FirstOrDefault();
}

Это позволяет мне сделать:

var matches=regex.Matches(input);
var accessToken=matches.GetGroup("access");
var userId=matches.GetGroup("user_id");
2 голосов
/ 27 июля 2011
string input = @"access_token=f34b46f0f109d423sd4236af12d1bce7f10df108ec2183046b8f94641ebe&expires_in=0&user_id=37917395";


var result = Regex.Match(input, @"access_token=([^&]+).*?user_id=([^&]+)");

var access_token = result.Groups[1].Value;
var user_id = result.Groups[2].Value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...