rvi*_*007 1 regex ios nsregularexpression
我的文本中可能包含圆括号、方括号以及具有相同文本的子字符串。如何通过正则表达式使这些文本匹配,但不区分大小写?
NSError* error = nil;
NSString* text = @"Hello (extreme elevation) - some longer string";
NSString* obj = @"hello (extreme elevation)";
NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:obj
options:NSRegularExpressionCaseInsensitive
error:&error];
NSArray* matches = [regex matchesInString:text
options:0
range:NSMakeRange(0, text.length)];
Run Code Online (Sandbox Code Playgroud)
这不匹配任何内容,即使 Obj 将 hello 大写,它也不会通过正则表达式匹配,但会通过 NSString rangeOfString 匹配。我希望能够在这种情况下将 obj 与文本匹配,以及其他可能有括号的情况,例如:
NSString* text = @"Hello [extreme elevation]";
NSString* obj = @"hello [extreme elevation]";
Run Code Online (Sandbox Code Playgroud)
在正则表达式的上下文中,括号、方括号、星号、加号和其他类似字符称为元字符。为了匹配它们,您需要
回想一下,反斜杠也由 Objective-C 编译器解释,因此如果将表达式放入字符串文字中,则需要使用双反斜杠,如下所示:
NSString* obj = @"hello \\(extreme elevation\\)";
Run Code Online (Sandbox Code Playgroud)
方括号方法在这里也适用:
NSString* obj = @"hello [(]extreme elevation[)]";
Run Code Online (Sandbox Code Playgroud)
(它适用于除方括号之外的所有元字符,方括号需要用反斜杠转义):
NSString* obj = @"hello \\[extreme elevation\\]";
Run Code Online (Sandbox Code Playgroud)