





Вы не можете эффективно анализировать HTML с помощью регулярного выражения. Если вы заранее знаете формат страницы - например.
тогда это может сойти с рук, но для обычного [X] HTML парсер регулярных выражений не подходит.
В зависимости от того, какой язык вы используете, вам нужно будет найти либо библиотеку парсера HTML (например, Python BeautifulSoup), либо укладчик HTML в сочетании со стандартным парсером XML, а затем просканировать документ на наличие элементов <a> (и, возможно, другие, например, <img>, если они вас интересуют?), а затем разделите значение атрибута на '?'.
Re: Комментарий Бобинса, HTMLAgilityPack - хороший html-парсер для .NET, более снисходительный к неправильной разметке, чем другие парсеры.
Использование этого позволит вам найти все теги A, затем вы можете получить HREF и просто удалить все, что находится после и включая '?'
Найдите это:
/href = "([^\?"]*?)\?[^\"]*"/
Заменить:
href = "\1"
вам, возможно, придется следить, чтобы он не удалял теги <link>.
Есть несколько случаев, которые не подходят: href = "foo? Bar", href = foo? Bar (недействительно, но все же может появиться) href = 'foo? Bar'
Спасибо, bobince, я на самом деле использовал BeautifulSoup, но искал быстрый и грязный способ, а не повторять все ссылки.