我正在尝试执行以下正则表达式:^(\$.)([\d]{1,10})?
https://regex101.com $C14325
字符串的结果为[0-2]:"$C"
和[2-7]:"14325"
。
但是,当我使用NSRegularExpression
执行以下代码时,它将返回单个匹配项,而不是组。
基本上,我试图将这些结果分组,并找到一种方法,结果对应哪个正则表达式。
NSString *regexStr=@"^(\\$.)([\\d]{1,10})?";
NSString *inputStr=@"$C14325";
NSError *regexError;
NSRegularExpression *aRegx=[NSRegularExpression regularExpressionWithPattern:regexStr options:NSRegularExpressionCaseInsensitive error:®exError];
NSArray *results=[aRegx matchesInString:inputStr options:0 range:NSMakeRange(0, inputStr.length)];
Named capture groups with NSRegularExpression有答案,但我认为rangeAtIndex
如果无法找到该值,则会抛出异常。
答案 0 :(得分:3)
你的正则表达式部分是正确的。您需要做的就是在results
:
for (NSTextCheckingResult *match in results) {
NSRange matchRange = [match range];
NSRange first = [match rangeAtIndex:1];
NSRange second = [match rangeAtIndex:2];
NSLog(@"1:%@ 2:%@.", [NSValue valueWithRange:first], [NSValue valueWithRange:second]);
}
1:NSRange: {0, 2} 2:NSRange: {2, 5}.