検査される文字列は次のようになります (角かっこの間の空白に注意してください)。
[name] [address ] [ zip] [ phone number ]
今使っている表現は…
\[([^\])]*)\]
...大括弧内の各テキストを正常にキャプチャしますが、先頭と末尾のスペースも取得するため、次のようになります。
"name" "address " " zip" " phone number "
しかし、私が求めているのは:
"name" "address" "zip" "phone number"
これらの例で正規表現が空白をキャプチャしないようにするにはどうすればよいでしょうか? (「電話番号」の単語間の空白など、埋め込まれた空白は除きます。)
(注:式が完了した後、キャプチャされた変数からそれをトリミングできることはわかっていますが、式のコンテキスト内でそれを実行しようとしています。)
アイデアをありがとう!以下は、これをテストするために使用している正確なコードです。
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\[([^\\])]*)\\]" options:0 error:nil];
NSString *string = @" [name] [address ] [ zip] [ phone number ] ";
NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length])
withTemplate:@"\n\n[$1]"]; //note: adding brackets back here just to make it easy to see if the space has been trimmed properly from the captured value
NSLog(@"\n\n%@", modifiedString);