Вопрос по html, parsing, href, java – выход:

1

уйста, кто-то может помочь мне разобрать эти ссылки со страницы HTML

http://nemertes.lis.upatras.gr/dspace/handle/123456789/2299http://nemertes.lis.upatras.gr/dspace/handle/123456789/3154http://nemertes.lis.upatras.gr/dspace/handle/123456789/3158

Я хочу разобрать используяручка«Слово, которое часто встречается в этих ссылках.

Я использую команду[Pattern pattern = Pattern.compile("<a.+href=\"(.+?)\"");] но это разобрать меня всеhref ссылки на странице.

Какие-либо предложения?
Спасибо

Вы пытались отобразить группу № 1 ваших матчей? Lucas de Oliveira

Ваш Ответ

2   ответа
2

Ваше регулярное выражение смотрит на ВСЕ<a href... теги. «handle» всегда используется как «/ dspace / handle» и т. д., так что вы можете использовать что-то вроде этого, чтобы очистить URL, которые вы ищете:

Pattern pattern = Pattern.compile("<a.+href=\"(/dspace/handle/.+?)\"");
Большое спасибо ... отлично работает! Spyros
1

ваше регулярное выражение делает что-то не так. Вместо

Pattern pattern = Pattern.compile("<a.+href=\"(.+?)\"");

Пытаться:

Pattern pattern = Pattern.compile("<a\\s+href=\"(.+?)\"");

«. +» в вашем первом шаблоне соответствует любому символу хотя бы один раз. Если вы намеревались установить символ пробела, используйте вместо этого '\ s +'.

Следующий код работает отлично:

    String s = "<a href=\"http://nemertes.lis.upatras.gr/dspace/handle/123456789/2299\"/> " +
            "<a href=\"http://nemertes.lis.upatras.gr/dspace/handle/123456789/3154\" /> " +
            "<a href=\"http://nemertes.lis.upatras.gr/dspace/handle/123456789/3158\"/>";

    Pattern p = Pattern.compile("<a\\s+href=\"(.+?)\"", Pattern.MULTILINE);
    Matcher m = p.matcher(s); 
    while(m.find()){
        System.out.println(m.start()+" : "+m.group(1));
    }

выход:

0 : http://nemertes.lis.upatras.gr/dspace/handle/123456789/2299
72 : http://nemertes.lis.upatras.gr/dspace/handle/123456789/3154
145 : http://nemertes.lis.upatras.gr/dspace/handle/123456789/3158

Похожие вопросы