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

95
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

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

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

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

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

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

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

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

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

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

80