替换NSString中的[]括号?

时间:2012-08-21 18:21:49

标签: objective-c regex cocoa nsstring

我正在尝试查找并替换[URL]NSString的任何匹配项。这是我的方法:

NSString *test = @"Test [URL] 123";
test = [test stringByReplacingOccurrencesOfString:@"[URL]"
                                       withString:@"HERE"
                                          options:NSRegularExpressionSearch
                                            range:NSMakeRange(0, test.length)];

结果是Test [HEREHEREHERE] 123。 我想这是因为[URL]表示这3个字符中的任何一个,所以所有3个字符将一个接一个地替换为HERE

但我也尝试\[URL\]同样的结果。

那么,我如何实际搜索字符[]

2 个答案:

答案 0 :(得分:5)

你对诊断问题绝对正确:方括号是正则表达式语言中的元字符,因此它们会被正则表达式引擎解释。

你需要双重转义斜杠,因为它们是Objective-C和regexp语言中的特殊字符:@"\\[URL\\]"

答案 1 :(得分:1)

尝试改为

test = [test stringByReplacingOccurrencesOfString:@"\\[URL\\]"
                                       withString:@"HERE"
                                          options:NSRegularExpressionSearch
                                            range:NSMakeRange(0, test.length)];

希望它有所帮助:)