2013-10-08 1 views
0

Я начинаю развиваться в Objective-C, и у меня есть проблема с поиском правильного регулярного выражения для перечисления привязки в документе HTML.Регулярное выражение в 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 

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

+0

[Вы не знаете] (http://stackoverflow.com/a/1732454/1705725) – Kippie

+0

Возможный дубликат [тегов OpenEx, открытых за исключением тегов XHTML] (http://stackoverflow.com/questions/1732348/регулярное выражение-матч-открытого-теги-кроме-Xhtml-самодостаточный-тег) –

ответ

0

Сложно сделать это правильно в регулярном выражении со всеми общими, которые позволяет HTML. Лучше использовать парсер HTML, например Hpple. См. How to Parse HTML on iOS Рей Вендерлиха.

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

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

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