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

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

Ответы [ 3 ]

5 голосов
/ 07 ноября 2008

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

  • ссылки всегда имеют вид или
  • все ссылки являются абсолютными, и никакие другие строки, не связанные с ссылками, начинающиеся с http: существуют

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

В зависимости от того, какой язык вы используете, вам нужно будет найти либо библиотеку синтаксического анализатора HTML (например, BeautifulSoup Python), либо уровень HTML-кода в сочетании со стандартным синтаксическим анализатором XML, а затем отсканировать документ на наличие элементов (и, может быть, другие, например, image, если вы заинтересованы в них?), затем разделите значение атрибута на «?».

2 голосов
/ 07 ноября 2008

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

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

0 голосов
/ 07 ноября 2008

Найти это:

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

Заменить на:

href="\1"

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

...