Поиск через NSString с использованием регулярного выражения
Как я могу искать/перечислять через NSString
с помощью регулярного выражения?
Регулярное выражение, такое как: /(NS|UI)+(\w+)/g
.
Ответы
Ответ 1
Вам нужно использовать класс NSRegularExpression
.
Пример, вдохновленный документацией:
NSString *yourString = @"";
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"(NS|UI)+(\\w+)"
options:NSRegularExpressionCaseInsensitive
error:&error];
[regex enumerateMatchesInString:yourString options:0 range:NSMakeRange(0, [yourString length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
// your code to handle matches here
}];
Ответ 2
Если вы просто хотите сопоставить некоторый шаблон в строке, есть простой способ проверить регулярное выражение с помощью NSString
:
NSString *string = @"Telecommunication";
if ([string rangeOfString:@"comm" options:NSRegularExpressionSearch].location != NSNotFound)
NSLog(@"Got it");
else
NSLog(@"No luck");
Заметьте, часто вы захотите...
if ([string rangeOfString:@"cOMm"
options:NSRegularExpressionSearch|NSCaseInsensitiveSearch].location
!= NSNotFound)
NSLog(@"yes match");
В Swift вы можете написать такой код...
let string = "Telecommunication"
if string.rangeOfString("cOMm", options: (NSStringCompareOptions.RegularExpressionSearch | NSStringCompareOptions.CaseInsensitiveSearch)) != nil
{
print("Got it");
} else {
print("No luck");
}
Обратите внимание, что rangeOfString(...)
возвращает Range<String.Index>?
, который возвращает nil, если поиск не прошел в Xcode 6.3.2