Как написать регулярное выражение перехватить любой HREF, заканчивающийся определенным параметром? - PullRequest
0 голосов
/ 17 июля 2009

У меня есть этот HTML:

  <ul><li><a href="/web3/showProfile.do;jsessionid=812E1C87A4FB4184650C551F27ADADAB.6-1?clientId=ZGVfX05FWFQ-&amp;cid=6-1&amp;activity=userdata&amp;levelFirstItem=0">Zugangsdaten</a></li><li><a href="/web3/setBookingTemplate.do;jsessionid=812E1C87A4FB4184650C551F27ADADAB.6-1?clientId=ZGVfX05FWFQ-&amp;cid=6-1&amp;activity=template&amp;levelFirstItem=1">Buchungsvorlagen</a></li><li><a href="/web3/showProfile.do;jsessionid=812E1C87A4FB4184650C551F27ADADAB.6-1?clientId=ZGVfX05FWFQ-&amp;cid=6-1&amp;activity=showFavorites&amp;levelFirstItem=2">Hotelfavoriten</a></li><li><a href="/web3/showProfile.do;jsessionid=812E1C87A4FB4184650C551F27ADADAB.6-1?clientId=ZGVfX05FWFQ-&amp;cid=6-1&amp;activity=showLightHistory&amp;levelFirstItem=3">Buchungshistorie</a></li><li><a href="/web3/showProfile.do;jsessionid=812E1C87A4FB4184650C551F27ADADAB.6-1?clientId=ZGVfX05FWFQ-&amp;cid=6-1&amp;activity=showHotelRating&amp;levelFirstItem=4">Hotelbewertung</a></li></ul>

Как извлечь HREF, оканчивающийся на levelFirstItem=2? Пример:

/web3/showProfile.do;jsessionid=812E1C87A4FB4184650C551F27ADADAB.6-1?clientId=ZGVfX05FWFQ-&amp;cid=6-1&amp;activity=showFavorites&amp;levelFirstItem=2

Ответы [ 4 ]

3 голосов
/ 17 июля 2009

В общем, лучше найти библиотеку HTML, которая позволит вам получать информацию из HTML. Использование регулярных выражений очень быстро запутает.

Какой язык вы используете? Я уверен, что люди здесь могут направить вас к хорошей библиотеке для разбора HTML на любом популярном языке.

3 голосов
/ 17 июля 2009

Это будет захватывать все в кавычках только для levelFirstItem = 2:

/href="([^"]*levelFirstItem=2)"/
0 голосов
/ 17 июля 2009

или, возможно, /href="(.*?)"/ при условии, что используемый вами механизм регулярных выражений сводит на нет жадность с ?.

0 голосов
/ 17 июля 2009
/href="([^"]*)"/

и на Java:

Pattern p = Pattern.compile("href=\"([^\"]*)\"");
Matcher m = p.matcher(line);
if(m.matches()) {
    String href = m.group(1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...