大括弧([])のエスケープ

かなりハマったので情報共有の意味で。

Obj-C+CocoaOnigurumaを使って、大括弧([])を検索して空文字に置換する以下のコードを記述。

NSMutableString *str = [NSMutableString stringWithString:@"[あいうえお]"];
// 表示では¥だが、実際のコードは\
NSString *rep = [str replaceAllByRegexp:@"(\[|\])" with:@""];

これをビルドすると、下記の警告がでてしまう。

unknown escape sequence '\]'

右大括弧だけの問題かと思って、左大括弧だけの検索にしてみてもうまくいかない。

散々悩んだ結果、どうやらバックスラッシュ(\)が足りていなかった模様。

NSMutableString *str = [NSMutableString stringWithString:@"[あいうえお]"];
// 表示では¥だが、実際のコードは\
NSString *rep = [str replaceAllByRegexp:@"(\\[|\\])" with:@""];

上記のようにすることで、正しく検索することができた。
もしかしたら、どこかのドキュメントに記載されているのかも知れないけど、自分は見つけることができなかった・・・。