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 が許可するすべての一般性を備えた正規表現でこれを適切に行うのは複雑です。Hpple などの HTML パーサーを使用することをお勧めします。Ray Wenderlich のHow to Parse HTML on iOS を参照してください。

ただし、いくつかの特殊なケース (例:href常に二重引用符で囲まれている場合) だけに関心がある場合は、次のようにすることができます。

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

ここには多くの制限がありますが、おそらくそれは出発点です。より一般的なものについては、正規表現ではなく HTML パーサーを追求する必要があります。

于 2013-10-08T14:54:40.853 に答える