33

Cocoa では正規表現がサポートされていないため、RegexKitLiteは非常に便利です。ただし、すべての例で一致する文字列が抽出されます。

文字列が正規表現に一致するかどうかをテストして、はいまたはいいえを取得したいだけです。

どうやってやるの?

4

4 に答える 4

59

そのために NSPredicate を使用しました。

NSString *someRegexp = ...; 
NSPredicate *myTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", someRegexp]; 

if ([myTest evaluateWithObject: testString]){
//Matches
}
于 2011-04-25T09:28:13.900 に答える
26

これを行う別の方法は、 を使用するよりも少し簡単ですが、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。

于 2013-02-17T00:59:43.257 に答える
3

NSRegularExpressionは別のオプションです。

http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html

于 2011-05-27T22:18:28.780 に答える
2

メソッドを使用し-isMatchedByRegex:ます。

if([someString isMatchedByRegex:@"^[0-9a-fA-F]+:"] == YES) { NSLog(@"Matched!\n"); }
于 2011-05-28T06:33:57.647 に答える