因为可可中不支持常规的显示效果我觉得RegexKitLite非常有用。 但是所有的例子都提取匹配的字符串。如何检查字符串是否与objective-c中的正则表达式匹配?
我只是想测试一个字符串正则表达式匹配,并得到一个是或否
我怎么能这样做?
因为可可中不支持常规的显示效果我觉得RegexKitLite非常有用。 但是所有的例子都提取匹配的字符串。如何检查字符串是否与objective-c中的正则表达式匹配?
我只是想测试一个字符串正则表达式匹配,并得到一个是或否
我怎么能这样做?
我用NSPredicate用于这一目的:
NSString *someRegexp = ...;
NSPredicate *myTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", someRegexp];
if ([myTest evaluateWithObject: testString]){
//Matches
}
使用-isMatchedByRegex:
方法。
if([someString isMatchedByRegex:@"^[0-9a-fA-F]+:"] == YES) { NSLog(@"Matched!\n"); }
注意,这不是可可的一部分。非常简单的答案在这里.. http://stackoverflow.com/questions/4353834/search-through-nsstring-using-regular-expression – Fattie 2013-12-28 17:06:57
那么,@弗拉基米尔的答案似乎对我来说更简单。 – 2014-02-25 17:29:11
为什么使用'== YES'? – 2015-09-25 17:37:52
另一种方式来做到这一点,这比使用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...
方法的有效选项。
正则表达式'Cocoa不支持'?自从iOS 4.0发布以来,NSRegularExpression就已经成为框架的一部分,这个问题已经提出了将近一年的时间,而且显然有一些方法在引入'NSRegularExpression'之前使用了正则表达式,例如,瓦兹的答案。 – 2013-08-14 16:42:17