ios - 我怎么知道正则表达式的哪一部分与 Objective-c 匹配

标签 ios objective-c regex

我已经声明了一个NSRegularExpression。例如 [0-9]{1,4}|abc|ABC 。我输入了一个 NSString: @"123"。如果我检查 NSTextCheckingResult,它不是零。所以我知道字符串匹配正则表达式。但是,我可以知道更多关于匹配的部分吗?对于这种情况,我知道正则表达式 [0-9]{1,4} 是匹配的。我怎样才能做到这一点?谢谢!

最佳答案

如果我正确理解你的问题,你必须使用 捕获组 (...):

NSString *pattern = @"([0-9]{1,4})|(abc)|(ABC)";

如果字符串匹配模式中的第一个捕获组 然后

[result rangeAtIndex:1]

将是匹配子串的范围,而

[result rangeAtIndex:2]
[result rangeAtIndex:3]

range.location == NSNotFound。示例:

NSString *pattern = @"([0-9]{1,4})|(abc)|(ABC)";
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];

NSString *str = @"123";
NSTextCheckingResult *result = [regex firstMatchInString:str options:0 range:NSMakeRange(0, str.length)];

NSLog(@"%@", NSStringFromRange([result rangeAtIndex:1])); // {0, 3}
NSLog(@"%@", NSStringFromRange([result rangeAtIndex:2])); // {9223372036854775807, 0}
NSLog(@"%@", NSStringFromRange([result rangeAtIndex:3])); // {9223372036854775807, 0}

关于ios - 我怎么知道正则表达式的哪一部分与 Objective-c 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34555629/

相关文章:

ios - 需要建议在 iOS 开发中集成 Gmail 帐户

objective-c - NSTextField doubleValue 本地化混淆

ios - 如何在 TableViewController 中使用 indexPathForItemAtPoint?

javascript - 为什么 jquery 正则表达式每次返回不同的测试用例?

ios - UITableViewController 的静态内容消失了

ios - 将自己作为委托(delegate)传递时的无限循环

regex - 在多个索引处拆分字符串 --> [String]?

regex - 优化这个可怕的正则表达式

IOS/Objective-C : Conflicting return type in implementation error

ios - UITextView 字体大小类不改变