如何在iOS中使用全局搜索编写正则表达式?

时间:2016-07-20 01:17:59

标签: ios objective-c regex nsregularexpression

我试图创建一个正则表达式来缩小缩写中的州名。例如,字符串"纽约"应该用" NY"替换。

我来了/[^[A-Z]/g。我在这里测试了它:http://regexr.com并且它有效!

当我用objective-c代码编写它时,它不起作用。

NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^A-Z]/g" options:NSRegularExpressionCaseInsensitive error:&error];

NSString *abbreviation = [regex stringByReplacingMatchesInString:self.state options:0 range:NSMakeRange(0, [self.state length]) withTemplate:@""];

我对正则表达式不太熟悉。为什么这不起作用? (这可能是一个愚蠢的错误,但我找不到它)

1 个答案:

答案 0 :(得分:2)

正则表达式中的\g是什么?使用选项@"[^A-Z]"尝试@"[^A-Z]+"0

使用正则表达式进行搜索或替换的iOS中的

非常贪婪,搜索或替换作用域取决于正则表达式函数参数中的range

NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^A-Z]" options:0 error:&error]; // or @"[^A-Z]+"

NSString *UF = [regex stringByReplacingMatchesInString:@"New York" options:0 range:NSMakeRange(0, [@"New York" length]) withTemplate:@""];