Удалите строку запроса из URL-адреса в HTML с помощью регулярного выражения

Учитывая HTML-документ, каков наиболее правильный и краткий шаблон регулярного выражения для удаления строк запроса из каждого URL-адреса в документе?

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
3 222
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы не можете эффективно анализировать HTML с помощью регулярного выражения. Если вы заранее знаете формат страницы - например.

  • ссылки всегда имеют вид <a href = "url без лишних символов перехода">, или
  • все ссылки являются абсолютными, и никакие другие строки без ссылок, начинающиеся с http: exist

тогда это может сойти с рук, но для обычного [X] HTML парсер регулярных выражений не подходит.

В зависимости от того, какой язык вы используете, вам нужно будет найти либо библиотеку парсера HTML (например, Python BeautifulSoup), либо укладчик HTML в сочетании со стандартным парсером XML, а затем просканировать документ на наличие элементов <a> (и, возможно, другие, например, <img>, если они вас интересуют?), а затем разделите значение атрибута на '?'.

Спасибо, bobince, я на самом деле использовал BeautifulSoup, но искал быстрый и грязный способ, а не повторять все ссылки.

EoghanM 07.11.2008 15:50

Re: Комментарий Бобинса, HTMLAgilityPack - хороший html-парсер для .NET, более снисходительный к неправильной разметке, чем другие парсеры.

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

Найдите это:

/href = "([^\?"]*?)\?[^\"]*"/

Заменить:

href = "\1"

вам, возможно, придется следить, чтобы он не удалял теги <link>.

Есть несколько случаев, которые не подходят: href = "foo? Bar", href = foo? Bar (недействительно, но все же может появиться) href = 'foo? Bar'

Greg 07.11.2008 14:28

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