次のパターンを使用して、期待される結果を取得します。
background-image:url\\((.*)\\)
コードに適用:
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"background-image:url\\((.*)\\)" options:NSRegularExpressionCaseInsensitive error:nil];
これを使用すると、希望どおりの結果が「/assets/test.jpg」になります。
コードは、「\(」の不明なエスケープシーケンスに関する警告を表示するはずです。「(」をエスケープするには、「\\(」を使用する必要があります。また、先頭と末尾の「\\b」を削除してください。あなたのパターン。
ただし、このパターンは、文字列に「background-image:url(somevaluehere)」のみが含まれている場合にのみ機能することに注意してください。
編集:
\\ bはどういう意味ですか?
\\ bは単語の境界であり、通常は\bとして表されます。NSStringでは、実際の円記号として扱われるように\をエスケープする必要があるため、\\bを記述する必要があります。
ここに、どの単語境界が一致するかに関するいくつかの情報があります。
単語の境界として適格な3つの異なる位置があります。
- 文字列の最初の文字の前。最初の文字が単語文字の場合。
- 文字列の最後の文字の後、最後の文字が単語文字の場合。
- 文字列内の2つの文字の間。一方は単語文字で、もう一方は単語文字ではありません。
簡単に言うと、\ bを使用すると、\ bword\bの形式の正規表現を使用して「単語全体のみ」の検索を実行できます。「単語文字」とは、単語を形成するために使用できる文字です。「単語文字」ではないすべての文字は「非単語文字」です。
http://www.regular-expressions.info/wordboundaries.htmlから取得
これがこれを少し明確にすることを願っています。