[英]Equivalent of Java's Matcher.lookingAt() in Objective C
我正在將Java框架移植到目標C,而該框架在很大程度上依賴於正則表達式。 不幸的是,Java正則表達式API與Objective C API有很多不同。
我正在嘗試使用NSRegularExpression類來評估正則表達式。 在Java中,這是完全不同的:您必須使用Pattern和Matcher類。
有些事情我不知道(除其他外)。 什么是目標C中的Matcher.lookingAt()? 放入代碼中。 以下代碼的Objective C翻譯是什么?
Pattern pattern = Pattern.compile("[aZ]");
boolean lookingAt = pattern.matcher("abc").lookingAt();
感謝任何認識的人! (順便說一句,上面的示例將true賦給lookingAt布爾值)
我想到了! 這是與JavaRegularExpression等效的Java代碼:
NSError *error = nil;
NSRegularExpression *expression = [NSRegularExpression regularExpressionWithPattern:@"[aZ]" options:0 error:&error];
if (error) {
// Do something when an error occurs
}
NSString *candidate = @"abc";
BOOL lookingAt = [expression numberOfMatchesInString:candidate options:NSMatchingAnchored range:NSMakeRange(0, candidate.length)] > 0;
這里的重點在於執行表達式時的NSMatchingAnchored選項! 文檔說:
NSMatchingAnchored指定將匹配項限制為搜索范圍開始時的匹配項。 有關上下文中常量的描述,請參見enumerateMatchesInString:options:range:usingBlock:。
這正是我想要的!
你可能會做類似的事情
NSString *regex = @"ObjC";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS %@", regex];
if( [predicate evaluateWithObject:myString])
NSLog(@"matches");
else
NSLog(@"does not match");
請參閱謂詞格式字符串語法指南以了解更多選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.