【发布时间】:2019-10-24 23:13:04
【问题描述】:
我正在使用正则表达式((.*)?:)?(.*)\\/([0-9]+|[n])? 匹配module:function/arity 类型的模式,其中arity 可以是任何数字>= 0 或字符串n。
成功案例应该匹配:
foo:bar/1
bar/1
foo:bar/0
foo:bar/n
bar/n
这似乎在https://regex101.com/r/AtI5Nw/3 上运行良好,但使用以下代码,我只得到"mod:func/1" 的一个匹配组。
+ (NSArray<NSTextCheckingResult *> *)matchesInString:(NSString *)string withExpression:(NSRegularExpression *)pattern {
return [pattern matchesInString:string options:0 range:NSMakeRange(0, [string length])];
}
我尝试使用"mod:func/1" 字符串,但只得到一个匹配项。如何获取屏幕截图中的所有匹配组?我想从字符串中获取module、function 和arity 部分。
【问题讨论】:
-
你得到一个匹配,因为它匹配你的整个模式,你得到你的截图的“完全匹配”。迭代它,然后检查
NSTextCheckingResult的numberOfRanges属性。如果要查找子范围,也可以使用其中的rangeAtIndex:。
标签: objective-c regex-group nsregularexpression