web-dev-qa-db-ja.com

正規表現を使用してNSStringを検索する

正規表現を使用してNSStringを検索/列挙するにはどうすればよいですか?

/(NS|UI)+(\w+)/gなどの正規表現。

39
Joshua

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
}];
57

文字列内のパターンに一致させたいだけの場合は、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");
_

In Swiftこのようなコードを書くことができます...

スイフト2

_    let string = "Telecommunication"

    if string.rangeOfString("cOMm", options: (NSStringCompareOptions.RegularExpressionSearch | NSStringCompareOptions.CaseInsensitiveSearch)) != nil {
        print("Got it")
    } else {
        print("No luck")
    }
_

スイフト4

_    let string = "Telecommunication"

    if string.range(of: "cOMm", options: [.regularExpression, caseInsensitive]) != nil {
        print("Got it")
    } else {
        print("No luck")
    }
_

Swift 2のrangeOfString(_:,options:)およびSwift 4の range(of:options:) return _Range<String.Index>?_検索が失敗した場合にnilを返します

35
vedrano