получить полную строку в строке, исключая соответствующее регулярное выражение

Например, если значение соответствует «шаблону электронной почты», удалите ключ, также связанный с ним, из URL-адреса.

Если URL-адрес

https://stackoverflow.com/?key1=test&[email protected]&key3=something&[email protected],

затем удалите [email protected] и [email protected], чтобы новый URL был

https://stackoverflow.com/?key1=test&key3=something

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

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

Я сделал это с помощью java-программы. Но глядя на регулярное выражение, чтобы я мог применить его в xml и избежать java-программы

В основном это используется в urlrewritefilter (tuckey) и требуется удалить определенные строки запроса, соответствующие регулярному выражению.


person Venu Madhav    schedule 29.03.2018    source источник
comment
Вам лучше попробовать парсер URL. Для регулярного выражения вы можете сделать [?&]key[24]=[^&]+   -  person revo    schedule 29.03.2018
comment
Я привел пример ключа как key2 и key4. Я упомянул, что имена ключей не являются фиксированными и неизвестными.   -  person Venu Madhav    schedule 29.03.2018
comment
Возможный дубликат разобрать строку URI в коллекцию "имя-значение"   -  person azro    schedule 29.03.2018
comment
Смотрите ссылку, указанную как дубликат, это поможет вам   -  person azro    schedule 29.03.2018
comment
Есть ли максимальное количество ключей, которые входят в URL. Кроме того, я думаю, что лучше реализовать его, взяв все пары значений ключа, поместив его на карту, затем сравнив все значения с регулярным выражением электронной почты и объединив только те, для которых регулярное выражение не работает.   -  person Aman Chhabra    schedule 29.03.2018
comment
Основы регулярных выражений [?&](?:a-key|another-key)=[^&]+   -  person revo    schedule 29.03.2018


Ответы (1)


Вот простое решение в java (я видел, что ваш вопрос помечен как java). Это в основном шаблон, который соответствует? или &, за которым следует слово, затем =, а затем адрес электронной почты. Вы можете заменить эту часть [.\w]+@[\w]+\.\w+ на лучшее регулярное выражение электронной почты. Поиск электронной почты с помощью регулярных выражений может быть сложным для незнакомых электронных писем, но это будет основной идеей.

public class HelloWorld{

 public static void main(String []args){
    String url="https://stackoverflow.com/?key1=test&[email protected]&key3=something&[email protected]";
    System.out.println(url.replaceAll("[?&]\\w+=[.\\w]+@[\\w]+\\.\\w+",""));
 }
}
person Veselin Davidov    schedule 29.03.2018
comment
Я не ищу java-программу. Я ищу заменитель регулярного выражения. - person Venu Madhav; 29.03.2018
comment
ах, я видел тег java;) регулярное выражение можно использовать с другими инструментами. Я попробовал это в блокноте, например - person Veselin Davidov; 29.03.2018