【发布时间】:2011-08-12 05:30:47
【问题描述】:
【问题讨论】:
-
正则表达式'Cocoa 不支持'?自 iOS 4.0 发布以来,
NSRegularExpression一直是该框架的一部分,在提出这个问题之前将近一年,并且在引入NSRegularExpression之前,显然已经有使用正则表达式的方法,正如在中所提到的,例如,Vaz 的回答。
【问题讨论】:
NSRegularExpression 一直是该框架的一部分,在提出这个问题之前将近一年,并且在引入 NSRegularExpression 之前,显然已经有使用正则表达式的方法,正如在中所提到的,例如,Vaz 的回答。
比使用NSPredicate 更简单的另一种方法是 NSString 的 -rangeOfString:options: 方法的一个几乎未记录的选项:
NSRange range = [string rangeOfString:@"^\\w+$" options:NSRegularExpressionSearch];
BOOL matches = range.location != NSNotFound;
我说“几乎没有文档”,因为该方法本身没有列出可用的选项,但是如果您碰巧在搜索和比较运算符的文档中找到NSRegularExpressionSearch,您会发现它是一个有效的选项对于自 OS X 10.7 和 iOS 3.2 以来的 -rangeOfString... 方法。
【讨论】:
使用-isMatchedByRegex: 方法。
if([someString isMatchedByRegex:@"^[0-9a-fA-F]+:"] == YES) { NSLog(@"Matched!\n"); }
【讨论】:
== YES 是多余的
【讨论】:
我为此使用了 NSPredicate:
NSString *someRegexp = ...;
NSPredicate *myTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", someRegexp];
if ([myTest evaluateWithObject: testString]){
//Matches
}
【讨论】: