Cocoa では正規表現がサポートされていないため、RegexKitLiteは非常に便利です。ただし、すべての例で一致する文字列が抽出されます。
文字列が正規表現に一致するかどうかをテストして、はいまたはいいえを取得したいだけです。
どうやってやるの?
Cocoa では正規表現がサポートされていないため、RegexKitLiteは非常に便利です。ただし、すべての例で一致する文字列が抽出されます。
文字列が正規表現に一致するかどうかをテストして、はいまたはいいえを取得したいだけです。
どうやってやるの?
そのために NSPredicate を使用しました。
NSString *someRegexp = ...;
NSPredicate *myTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", someRegexp];
if ([myTest evaluateWithObject: testString]){
//Matches
}
これを行う別の方法は、 を使用するよりも少し簡単ですが、NSString のメソッドNSPredicate
に対するほとんど文書化されていないオプションです。-rangeOfString:options:
NSRange range = [string rangeOfString:@"^\\w+$" options:NSRegularExpressionSearch];
BOOL matches = range.location != NSNotFound;
メソッド自体には使用可能なオプションがリストされていないため、「ほとんど文書化されていない」と言いますが、検索演算子と比較演算子のドキュメントを偶然見つけて、OS X 以降NSRegularExpressionSearch
のメソッドの有効なオプションであることがわかります。 -rangeOfString...
10.7 および iOS 3.2。
NSRegularExpressionは別のオプションです。
メソッドを使用し-isMatchedByRegex:
ます。
if([someString isMatchedByRegex:@"^[0-9a-fA-F]+:"] == YES) { NSLog(@"Matched!\n"); }