Парсинг параметров с помощью Regex

264
03 октября 2017, 02:54

Есть строка - ответ от веб сервера, приблизительно такого содержания

parameter0=213123123&parameter1=abcd&parameter2=vdv3123cdc

Как можно с помощью регулярных выражений вытащить значение параметра? Попробовал следующим образом: var regex = new Regex(@"parameter0=.*?(&|\r\n)");

Но в данном случае вернет parameter0=213123123&, по идее необходимо вытащить только значение. И к сожалению данный вариант не найдет parameter2.

Answer 1

Используйте для задач соответствующие инструменты(System.Web.HttpUtility)

string q = "parameter0=213123123&parameter1=abcd&parameter2=vdv3123cdc";
var result = HttpUtility.ParseQueryString(q);
Console.WriteLine(result["parameter2"]);

The ParseQueryString method uses UTF8 format to parse the query string In the returned NameValueCollection, URL-encoded characters are decoded and multiple occurrences of the same query string parameter are listed as a single entry with a comma separating each value.

То есть вдобавок при этом параметры ваши будут декодированы (а-ля %20и т.п.), а повторяющиеся объединены через запятую.

Answer 2

В таких простых случаях решение без регекспов будет гораздо понятнее и читабельнее, например:

var s = "parameter0=213123123&parameter1=abcd&parameter2=vdv3123cdc";
var parameters = s.Split('&')
                  .Select(pair => pair.Split('='))
                  .ToDictionary(pair => pair[0], pair => pair[1]);
Console.WriteLine(parameters["parameter0"]);

Сплитим по &, затем каждый кусок сплитим по =, первый элемент берем как ключ, второй - как значение. На выходе словарь, в котором можно по ключу искать значение.

READ ALSO
Гайд или пример PJSIP

Гайд или пример PJSIP

Уже достаточно долго ищу и не могу найти нормального гайда по библиотеке pjsip, для написания простенького softphoneНа сайте pjsip не информативно...

269
Загрузка сцены из Bundle

Загрузка сцены из Bundle

Подскажите почему мой сцена не добавляется в build list - что не так сделал?

248
Нужен совет по реализации алгоритма с iframe

Нужен совет по реализации алгоритма с iframe

Есть определённый блок с параметрами сортировки, который лежит глубоко в DOMВ мобильной версии я хочу сделать его невидимым, но чтобы он открывался...

272
Почему PropTypes в React отмечен как deprecated?

Почему PropTypes в React отмечен как deprecated?

Есть компонент, он должен получать массив значений через propsИ все работало до тех пор пока я не добавил валидацию через PropTypes

280