捕获的组regex NSRegularExpression iOS

捕获的组regex NSRegularExpression iOS,ios,objective-c,regex,nsregularexpression,Ios,Objective C,Regex,Nsregularexpression,我正在尝试执行以下正则表达式:^(\$)([\d]{1,10})? 位于的$C14325字符串的结果是[0-2]:“$C”和[2-7]:“14325” 但是,当我使用NSRegularExpression执行以下代码时,它将作为单个匹配项而不是组返回 基本上,我正在尝试对这些结果进行分组,并找到一种方法,使结果对应于哪个正则表达式 NSString *regexStr=@"^(\\$.)([\\d]{1,10})?"; NSString *inputStr=@"$C14325"; NSError

我正在尝试执行以下正则表达式:
^(\$)([\d]{1,10})?

位于的
$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:&regexError];
NSArray *results=[aRegx matchesInString:inputStr options:0 range:NSMakeRange(0, inputStr.length)];

在上有答案,但我认为如果无法找到值,
RangeAtinex
将抛出异常。

您已经正确地找到了正则表达式部分。您只需在
结果中迭代匹配:

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}。


我以为打印结果会打印出这些内容。