Одно регулярное выражение с несколькими шаблонами соответствия

Регулярное выражение сложно :)

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

https://www.me.com/?name=bob&identify=bob1&test=email@me.com&validKey=validValue

Текущее регулярное выражение применяется

((name|identify|test)(=|%3D)[^&]*)

Что я хочу добавить/расширить, так это соответствие любым значениям, содержащим символ @. Я не знаю, что такое «ключ» в качестве его динамики, поэтому я не могу просто добавить «badKey» в сопоставленный шаблон. Таким образом, пример ввода для этого будет:

https://www.me.com/?name=bob&identify=bob1&test=email@me.com&validKey=validValue&badKey=test2@test.com

По сути, я хочу сопоставить все существующие части, а затем и «badKey». Я знаю, что могу запустить строку через второе регулярное выражение, но ради производительности я бы хотел, чтобы это был один шаблон.

Любая помощь здесь будет оценена по достоинству.

Вы отметили C#, так есть ли причина, по которой вы используете Regex вместо разбора строки запроса?

Johnathan Barclay 15.02.2023 10:11

@JohnathanBarclay Эта входная строка была просто примером, она не всегда может быть URI. Мне нужна подобная логика в нескольких местах. Я надеялся на решение этого вопроса, и тогда я мог бы понять, как это делается в URI, а затем применить логику в другом месте.

Jacques Ramsden 15.02.2023 10:13
Конечные и Readonly классы в PHP
Конечные и Readonly классы в PHP
В прошлом, когда вы не хотели, чтобы другие классы расширяли определенный класс, вы могли пометить его как final.
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
БЭМ: Конвенция об именовании CSS
БЭМ: Конвенция об именовании CSS
Я часто вижу беспорядочный код CSS, особенно если проект большой. Кроме того, я совершал эту ошибку в профессиональных или личных проектах и...
Революционная веб-разработка ServiceNow
Революционная веб-разработка ServiceNow
В быстро развивающемся мире веб-разработки ServiceNow для достижения успеха крайне важно оставаться на вершине последних тенденций и технологий. По...
Как добавить SEO(Search Engine Optimization) в наше веб-приложение и как это работает?
Как добавить SEO(Search Engine Optimization) в наше веб-приложение и как это работает?
Заголовок веб-страницы играет наиболее важную роль в SEO, он помогает поисковой системе понять, о чем ваш сайт.
Конфигурация Jest в angular
Конфигурация Jest в angular
В этой статье я рассказываю обо всех необходимых шагах, которые нужно выполнить при настройке jest в angular.
0
2
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я специально попросил Regex. В моем случае, если бы мне пришлось разбивать каждую строку, накладные расходы были бы слишком большими. Regex оказывается намного более эффективным.

Jacques Ramsden 16.02.2023 14:33

Dimitry 16.02.2023 15:57

Jacques Ramsden 17.02.2023 21:12

Просто примечание, если вы читаете мой вопрос, я ищу ключи с определенными значениями, а затем, в частности, любое значение, которое является электронным письмом, а не только вещи между символом Amp

Jacques Ramsden 17.02.2023 21:22
Ответ принят как подходящий

Я нашел шаблон, который будет соответствовать конкретным электронным письмам, а не только значениям, содержащим символ @.

(name|identify|test)(=|%3D)[^&|^%26]*|((=|%3D)(\\w+([-+.]\\w+)*[@|%40]\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*)[^&|^%26]*)

Другие вопросы по теме

Чтение чего-либо между {{ и }} regex в JavaScript
Почему это регулярное выражение терпит неудачу, когда есть лишний ноль?
Почему оператор bash «=~» игнорирует последнюю часть указанного шаблона?
Разобрать отформатированную строку с метками, написанными ЗАГЛАВНЫМИ БУКВАМИ, за которыми следует их значение, для создания ассоциативного массива.
Разделить строку с помощью разделителей и поместить их в несколько строк в sql, не работающем
Регулярное выражение с флагом m в Perl и Python
Как выполнить разделение строк, используя регулярное выражение в качестве ссылки, и чтобы часть используемого шаблона разделителя не удалялась из следующей строки?
Правильный шаблон регулярного выражения (re) в python
Как я могу преобразовать двойные косые черты в R, не сталкиваясь с ошибкой, связанной с escape-символами?
JavaScript Буквенно-цифровое регулярное выражение и разрешить звездочку в начале строки, но не разрешать звездочку в последних 4 цифрах строки