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

我怎样才能为此制作一个好的正则表达式?

4

1 回答 1

0

在正则表达式中正确执行此操作很复杂,具有 HTML 允许的所有通用性。最好使用 HTML 解析器,例如 Hpple。请参阅 Ray Wenderlich 的如何在 iOS 上解析 HTML

但是,如果您只对一些特殊情况感兴趣(例如,href总是用双引号引起来),您可以执行以下操作:

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

这里有很多限制,但也许这是一个起点。对于更一般的东西,你真的应该使用 HTML 解析器,而不是正则表达式。

于 2013-10-08T14:54:40.853 回答