Регулярка на шарпе находит лишнее

108
11 июня 2021, 11:10

Есть такой текст: GET /?code=KYTW/9Bjv7m7OhrXmuZd50PuvRq5b4TVi3GIH5ZXOVl59XQL8yMAhuC2IqS7XIsxSQauZA==&state= HTTP/1.1

Написал регулярку

Regex regex = new Regex(@"code=(\S*)&state");
MatchesCollections matches = regex.Matches(decodeMessage);

И в ответе получается:

code=KYTW/9Bjv7m7OhrXmuZd50PuvRq5b4TVi3GIH5ZXOVl59XQL8yMAhuC2IqS7XIsxSQauZA==&state

В коллекции только такая строка, других нет. Мне нужна строка: KYTW/9Bjv7m7OhrXmuZd50PuvRq5b4TVi3GIH5ZXOVl59XQL8yMAhuC2IqS7XIsxSQauZA==

Answer 1

Так вы только матчи нашли, надо дальше писать код. Например так:

var decodeMessage = "GET /?code=KYTW/9Bjv7m7OhrXmuZd50PuvRq5b4TVi3GIH5ZXOVl59XQL8yMAhuC2IqS7XIsxSQauZA" +
"==&state= HTTP/1.1";
var regex = new Regex(@"code=(\S*)&state");
var matches = regex.Matches(decodeMessage);
foreach (Match element in matches)
{
    Console.WriteLine(element.Groups[1].Value);
}

Матчасть: Конструкции группировки в регулярных выражениях

Но у меня огромное подозрение, что регулярку тут не нужны и вы из пушки по воробьям стреляете.

У вас входная строка - явно URL и можно просто разбить на пары ключ-значение и найти нужный нам элемент.

Например:

var uri = "/?code=KYTW/9Bjv7m7OhrXmuZd50PuvRq5b4TVi3GIH5ZXOVl59XQL8yMAhuC2IqS7XIsxSQauZA" +
"==&state= HTTP/1.1";
Uri myUri = new Uri($"http://localhost{uri}");
var param1 = HttpUtility.ParseQueryString(myUri.Query).Get("code");
Console.WriteLine(param1);

Этот вопрос на en so: https://stackoverflow.com/q/659887/5752652

READ ALSO
Сортировка вложенных объектов

Сортировка вложенных объектов

Есть сущность Request

89
Как парсить страницу, которая загружена в WebView? Android Xamarin

Как парсить страницу, которая загружена в WebView? Android Xamarin

Есть страница (не моя и без API) с которой надо взять данныеПример такой страницы

104
При переносе проекта возникает ошибка System.Runtime.CompilerServices.Unsafe, Version=4.0.4.0

При переносе проекта возникает ошибка System.Runtime.CompilerServices.Unsafe, Version=4.0.4.0

Запускаю проект на другой машине, проект скачан из репозитория, все ссылки работают, связи все правильные, через gacutil добавил несколько сборок,...

103
При билде Android APP Budle сцены не загружаются

При билде Android APP Budle сцены не загружаются

Дело в том что при билде приложения для Play Market нужно билдить его как Android App bundle , но проблема в том , что при таком билде я просто не могу загружать...

94