捕获的组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:®exError];
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}。
我以为打印结果会打印出这些内容。