У меня есть список параметров во многих пакетах, которые мне нужно перехватить с помощью регулярных выражений.
Каждый параметр будет начинаться с =
и заканчиваться &
Пример: addonName=CatchMe1&
Все параметры являются переменными, и я не могу знать, что они будут содержать (String, Integer и т.д.).
Спасибо.
POST /stringos.txt?addonName=CatchMe1&application=CatchMe2&platform=CatchMe3&platformVersion=CatchMe4&lastVersion=CatchMe5&downloadCount=CatchMe6 HTTP/1.1
Host: Host.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
addonName=CatchMe1&application=CatchMe2&platform=CatchMe3&platformVersion=CatchMe4&lastVersion=CatchMe5&downloadCount=CatchMe6
Как правило, для получения этих параметров лучше использовать анализатор URL, но если вы действительно хотите использовать RegEx, вы можете попробовать (?<==)[^&]+
См. этот рабочий пример: https://regex101.com/r/bzlYZ2/2
Объяснение:(?<==)[^&?]+
⇒ полное регулярное выражение(?<==)
⇒ обратная связь (без захвата), которая соответствует =
[^&?]+
⇒ любой символ нет&
или ?
(один или несколько)
Этот шаблон соответствует значениям ваших параметров. Если вам нужны ключи а также для значений, вы можете использовать группы захвата: ([^&?]+)=([^&]+)
чтобы у вас было ключ в группе 1 ($1
) и стоимость в группе 2 ($2
).
На данный момент мне удалось использовать это регулярное выражение для моей проблемы.
.*?=(.*?)&.*?=(.*?)&.*?=(.*?)&.*?=(.*?)&.*?=(.*?)&.*?=(.*?) HTTP/1.1
Спасибо.
Только имейте в виду, что это очень дорогой способ сделать это. Кроме того, это не совсем элегантно и динамично: что, если у вас есть на один параметр больше/меньше? Вам придется каждый раз менять RegEx.
За ваш вопрос проголосовали отрицательно, потому что вы пока ничего не говорите нам о том, что пробовали. Кроме того, вы должны использовать функцию форматирования кода. В любом случае, смотрите мой ответ ниже.