首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捕获的组regex NSRegularExpression iOS

捕获的组regex NSRegularExpression iOS
EN

Stack Overflow用户
提问于 2015-07-15 01:06:41
回答 1查看 1.9K关注 0票数 3

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

$C14325字符串在https://regex101.com上的结果是[0-2]:"$C"[2-7]:"14325"

但是,当我使用NSRegularExpression执行以下代码时,它将返回为单个匹配项,而不是一个组。

基本上,我试图对这些结果进行分组,并找出结果对应于哪个正则表达式的方法。

代码语言:javascript
复制
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)];

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-15 02:57:49

你说得对。您所需要做的就是在results中迭代匹配。

代码语言:javascript
复制
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}.

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31419835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档