Если я правильно понимаю ваш вопрос, вы хотите удалить части параметров запроса всех URL-адресов в строке html, верно?
Я бы посоветовал вам сначала избавиться от специальных символов HTML. Например, используя Нокогири. Скажем, у нас есть HTML в html_string
:
html_unescaped_string = Nokogiri::HTML.fragment(html_string).to_s
Я не уверен, что вы действительно хотите удалить из URL. Но давайте предположим, что вы хотели удалить все параметры запроса из URL-адреса, где правая часть содержит 'AWS'
(например, what_ever=bla_AWS_bla
).
Вы можете сделать это с помощью функции, подобной этой:
sanitizer = Proc.new do |uri_string|
URI.parse(uri_string).tap do |uri|
new_params = CGI.parse(uri.query).transform_values do |values|
values.reject { |value| value.include?("AWS") }
end
new_params.reject! { |_k, v| !v.empty? }
uri.query = new_params.empty? ? nil : URI.encode_www_form(new_params)
end.to_s
end
Для поиска URL в строке вы можете использовать симпатичный URI.regexp
. С этим вы можете сделать:
html_unescaped_string.gsub(URI.regexp, &sanitizer)
Надеюсь, это поможет ...