我试图创建一个正则表达式来缩小缩写中的州名。例如,字符串"纽约"应该用" 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:@""];
我对正则表达式不太熟悉。为什么这不起作用? (这可能是一个愚蠢的错误,但我找不到它)
答案 0 :(得分:2)
正则表达式中的\g
是什么?使用选项@"[^A-Z]"
尝试@"[^A-Z]+"
或0
:
非常贪婪,搜索或替换作用域取决于正则表达式函数参数中的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:@""];