Регулярное выражение в Objective-C для поиска списка ссылок HTML

0

Я начинаю развиваться в Objective-C, и у меня возникла проблема с поиском правильного регулярного выражения для перечисления якоря в документе HTML.

Пример: У меня есть этот код HTML:

<ul>
    <li><a class="class1" href="/document1.html"></li>
    <li><a class="class1" href="/document2.html"></li>
    <li><a class="class1" href="/document3.html"></li>
</ul>

Я хочу получить NSArray с таким результатом:

/document1.html
/document2.html
/document3.html

Как я могу сделать хорошее регулярное выражение для этого?

Теги:
nsregularexpression

1 ответ

0
Лучший ответ

Сложно сделать это правильно в регулярном выражении, со всеми общими, которые позволяет HTML. Лучше использовать HTML-парсер, например Hpple. См. Ray Wenderlich. Как анализировать HTML на iOS.

Но, если вас интересуют только некоторые особые случаи (например, href всегда в двойных кавычках), вы можете сделать что-то вроде:

NSRegularExpression *regex;
regex = [NSRegularExpression regularExpressionWithPattern:@"<a\\s[^>]*(?<=\\s)href\\s*=\\s*\"(.*?)\".*?>"
                                                  options:NSRegularExpressionCaseInsensitive
                                                    error:&error];

Здесь существует множество ограничений, но, возможно, это отправная точка. Для чего-то более общего, вам действительно нужно использовать HTML-парсер, а не регулярное выражение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню