为什么我的NSRegularExpression模式不起作用?

时间:2013-12-06 02:11:38

标签: objective-c regex nsregularexpression

我有以下字符串:

NSString *string = @"she seemed \x3cem\x3ereluctant\x3c/em\x3e to discuss the matter";

我希望最终字符串为:"she seemed reluctant to discuss the matter"

我有以下模式:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"/\\x[0-9a-f]{2}/"
                                                                           options:NSRegularExpressionCaseInsensitive
                                                                             error:&error];

NSArray *matches = [regex matchesInString:string options:0 range:NSMakeRange(0, [string length])];
for (NSTextCheckingResult *match in matches) {
    NSRange matchRange = [match range];
    NSLog(@"%@", NSStringFromRange(matchRange));
}

但是,我收到一个错误,说模式无效。我做错了什么?

2 个答案:

答案 0 :(得分:1)

您需要的模式是:

@"\\\\x[0-9a-f]{2}"

反斜杠对于Obj-C和RE解析器都是特殊的 - 所以你需要创建一个带有两个的Obj-C字符串,这样RE解析器就可以得到一个。

字符串中也没有打开/关闭分隔符 - 你在考虑另一种编程语言!

答案 1 :(得分:-1)

使用NSString方法

可以节省一些正则表达式的麻烦

stringByReplacingOccurrencesOfString:withString:

或者

stringByReplacingOccurrencesOfString:withString:选择:范围: