0

重複の可能性:
HTML NSRegularExpression の解析

私はこのような NSString を持っています:

NSString *string = @"<a href='http://john.com'>JOHN</a> http://john.com";

正規表現を使用して、アンカー タグに含まれていない URL を解析したいので、それらをアンカー タグに入れることができます。

私は現在これを持っています:

NSRegularExpression *URLRegex = [NSRegularExpression
                                 regularExpressionWithPattern:@"((https?):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|])" options:NSRegularExpressionCaseInsensitive error:nil];

これは URL を検出しますが、問題のあるアンカー タグ内の URL も検出します。

誰かが私が何をする必要があるか知っていますか? ありがとう。

アップデート:

@"([^\'](https?):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|][^\'])"

以下の Alex が提供するこのパターンは、改良版です。しかし、@" http://example.com ; john.com";のような文字列があるとします。- example.com が一致します。どうすればそれを除外できますか? 基本的に、アンカータグ内の何も一致させたくありません。

4

1 に答える 1

0

一般に、正規表現がどのように機能するかを考えると、「ない」ものをキャプチャしようとすることは、何かをキャプチャしようとすることよりもはるかに困難です。いくつかの sed コマンドまたは strip の実装などを使用して、上記を簡単に実装できます。

上記の形式を考えると、このようなものは機能しますか、それともあまりにも多くのコーナーケースを除外しますか?

"([^\'](https?):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|][^\'])"

つまり、URL が引用符で囲まれていないことを確認します。次のような場合に失敗します。

"tom went to 'https://www.google.com' to find the..."

しかし、それがあなたにとって重要かどうかはわかりません。

于 2013-01-13T19:41:20.107 に答える