捕获的组正则表达式 NSRegularExpression iOS

NNi*_*ikN 3 regex objective-c ios nsregularexpression

我正在尝试执行以下正则表达式: ^(\$.)([\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:&regexError];
NSArray *results=[aRegx matchesInString:inputStr options:0 range:NSMakeRange(0, inputStr.length)];
Run Code Online (Sandbox Code Playgroud)

Named capture groups with NSRegularExpression有答案,但我认为rangeAtIndex如果它无法找到该值会抛出异常。

das*_*ght 5

你的正则表达式部分是对的。您需要做的就是在 内迭代匹配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]);
}
Run Code Online (Sandbox Code Playgroud)

1:NSRange: {0, 2} 2:NSRange: {2, 5}.