2012-05-09 13 views
1

私のような文字列の画像パスを読み込むに問題がある - >背景画像を:URL(/assets/test.jpg)Objective Cの正規表現

私はせずに括弧の中の文字列を持っていたいですブラケットは自己です。ここで

は私のコードが使用されます。

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\bbackground-image:url\(.*\)\\b" options:NSRegularExpressionCaseInsensitive error:nil]; 

     thumbnail = [regex stringByReplacingMatchesInString:thumbnail options:0 range:NSMakeRange(0, [thumbnail length]) withTemplate:@"$1"]; 

私が得るものです(/assets/test.jpg)

答えて

3

expeced結果を取得するには、以下のパターンを使用します。

background-image:url\\((.*)\\) 

をあなたのコードに適用:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"background-image:url\\((.*)\\)" options:NSRegularExpressionCaseInsensitive error:nil]; 

これを使用すると、結果は "/assets/test.jpg"になります。

あなたのコードでは、 "\("のための未知のエスケープシーケンスに関する警告が表示されています。 "("をエスケープするには "\\始まり、あなたのパターンの最後

しかし、あなたの文字列のみが含まれている場合、このパターンにのみ動作することに注意してください。「背景画像:のURL(somevaluehere)」

EDIT:\\ Bの平均値を何

を?

\\ bは通常\ bで表される単語境界です。NSString yあなたが\をエスケープする必要があるので、\\ bを書く必要があります。そうすれば、実際のバックスラッシュとして扱われます。ここで

何語の境界の試合のいくつかの情報:文字列の最初の文字の前に

  • 最初の文字がある場合、:単語の境界としての資格3つの異なる位置があり

    ワードキャラクタ。

  • 文字列の最後の文字の後に、最後の文字が単語文字の場合。
  • 文字列内の2つの文字の間に、1つは単語文字であり、もう1つは単語文字ではありません。

\ bは、\ bword \ bという形式の正規表現 を使用して、「完全な単語のみ」検索を実行できるようにします。 「単語文字」は、単語を形成するために使用できる 文字です。 「単語文字」以外の文字はすべて「非単語文字」です。私は、これは、このビットを明確に願っていますhttp://www.regular-expressions.info/wordboundaries.html

から撮影

+0

あなたは説明していただけますか?\\ bは何を意味しますか? –

+0

私はいくつかの情報で私の答えを更新しました –

0

正規表現を\\bbackground-image:url\((.*)\)\\bに変更する必要があります。 。*の前後に。*を付けて、あなたが望むマッチをキャプチャします。