Текстовый редактор (Sublime Text, Geany, Notepad ++ и т. Д. c.) Regex для удаления всех параметров из строки URL, кроме одного значения параметра - PullRequest
0 голосов
/ 23 января 2020

Я не очень знаком с расширенными шаблонами сопоставления в Regex.

У меня есть несколько URL-адресов поиска Google, которые мне нужно очистить, не удерживая клавишу Backspace в течение 5 секунд, чтобы удалить ненужные параметры из URL.

Допустим, у меня есть этот URL (может быть много разных URL, следующих шаблонам, как показано ниже):

https://www.google.com/search?source=hp&ei=Ne4pXpSIHIW_9QOD-rmADw&q=laravel+crud+generator&oq=laravel+crud+generator&gs_l=psy-ab.3..0l8.1294.6845..7289...1.0..0.307.3888.0j20j2j1......0....1..gws-wiz.....6..0i131j0i362i308i154i357.PwlZ_932pXo&ved=0ahUKEwjU9pz4tJrnAhWFX30KHQN9DvAQ4dUDCAU&uact=5

И я хочу превратить это в красивый чистый URL-адрес поиска, как показано ниже:

https://www.google.com/search?q=laravel+crud+generator

Как я могу получить, используя Find / Replace with Regex любого из упомянутых текстовых редакторов в Вопросе?

Ответы [ 2 ]

2 голосов
/ 23 января 2020

Я пишу, что другие используют решение.

Replace

в блокноте ++, пожалуйста, нажмите CTRL+H, затем выберите Регулярное выражение ниже.

Затем поместите на Find what: этот шаблон: .+&(q=[^&]+).+ и в поле Заменить на вставку: https://www.google.com/search?$1

Теперь легко нажмите кнопку Replace для однократной замены или для всех замен, нажмите ALT+A или Replace All кнопка.

Проверка Regex101

Но описание:

1- .+& найти все символы до & после a q. Так что эта часть включает в себя https://www.google.com/search?source=hp&ei=Ne4pXpSIHIW_9QOD-rmADw&

2- (q=[^&]+), наша цель! мы хотим все после q= до следующего &. Поэтому мы ищем строку, которая начинается с q =, а затем любой символ, который не является &. [^&] означает символ, который не является &, а + говорит, что любой символ, который не является & больше нуля времени. эта часть будет включать q=laravel+crud+generator. Обратите внимание на круглые скобки .

3- .+ означает любой символ и включает в себя &oq=laravel+crud+generator&gs_l=psy-ab.3..0l8.1294.6845..7289...1.0..0.307.3888.0j20j2j1......0....1..gws-wiz.....6..0i131j0i362i308i154i357.PwlZ_932pXo&ved=0ahUKEwjU9pz4tJrnAhWFX30KHQN9DvAQ4dUDCAU&uact=5

ок, помните () в разделе 2? это была группа. Вы можете использовать группы в заменах по этому шаблону $groupNumber, который groupNumber является индексом скобок. Здесь у нас есть только одна () или фактически одна группа, поэтому наш оператор замены будет $1.

И, наконец, замена : https://www.google.com/search?$1, поэтому все внутри группы один будет заменить на $ 1.

0 голосов
/ 23 января 2020

Попробуйте заменить этот шаблон: (https://www.google.com/search\?).*(q=[^&]+).* на $1$2

Объяснение:

  • (https://www.google.com/search\?) = соответствует началу указанной строки. Обратите внимание на экранированный ?, так как это специальный символ. Обернутая в скобки, это становится группой захвата # 1 (доступной для $1)
  • .* = это будет соответствовать любым символам и также необязательно. Просто чтобы очистить что-нибудь между началом строки и вашим q параметром
  • (q=[^&]+) = соответствует вашему параметру q вплоть до символа & (указывающего следующий параметр). Обернутая в скобки, она становится группой захвата № 2 (доступной для $2)
  • .* = это будет соответствовать любым символам и также является необязательной. Эта часть очищает все что угодно после значения вашего q параметра

Замена:

  • $1$2 = Просто заменяет вашу строку группой захвата 1 и группой захвата 2

** Протестировано в Notepad ++ с примером строки

...