ios - 在字符串中查找数字模式

标签 ios objective-c regex

我希望能够在一个字符串中找到一个子字符串,但它有一个独特的模式,我不知道如何找到。

例如。

NSString *test1= @"Contact Names
                  67-444-322
                  Dec 21 2012
                  23941 6745 9145072 01567
                  5511 23345 614567 123456
                  Older Contacts
                  See Back Side";

我想在子字符串中找到以下模式(这些数字但不是日期数字)

                  23941 6745 9145072 01567
                  5511 23345 614567 123456

但是,示例字符串的格式几乎不会相同。除了“联系人姓名”、“旧联系人”和“见背面”之外,每次都会有不同的数字和不同的标题。将保持不变的一件事是,我正在寻找的数字将始终有 4 个数字,但可能有 1 行或 10 行。

有谁知道我将如何解决这个问题?我当时在想,也许只找到字符串中的数字,然后检查哪些数字之间有 3 个空格。

谢谢

最佳答案

我已经尝试了以下并且有效:

NSString *test1= @"Contact Names\n"
    "67-444-322\n"
    "Dec 21 2012\n"
    "23941 6745 9145072 01567\n"
    "5511 23345 614567 123456\n"
    "Older Contacts\n"
    "See Back Side";

NSString *pattern = @"(([0-9]+ ){3}+[0-9]+)(\\n(([0-9]+ ){3}+[0-9]+))*";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:nil];
NSArray *results = [regex matchesInString:test1 options:0 range:NSMakeRange(0, [test1 length])];
if ([results count] > 0) {
    NSTextCheckingResult *result = [results objectAtIndex:0];
    NSString *match = [test1 substringWithRange:result.range];
    NSLog(@"\n%@", match); // These are your numbers
}

(如果只有一行数字,它也有效。)

关于ios - 在字符串中查找数字模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14315168/

相关文章:

ios - 没有.self的swift类作为参数

ios - 如何从HTTPS云函数返回错误?

ios - iPhone 5 蜡

objective-c - ios潜在的泄漏如何解决?

ios - didReceiveRemoteNotification : fetchCompletionHandler: download freezes

ios - UITextField - 防止用户输入非标准字符(如表情符号)

ios - NSDate - 设置 future 日期

regex - 我如何要求至少两个前瞻模式在一个正则表达式中匹配?

javascript - 使用正则表达式匹配获取错误无法从 null 读取属性 "0"

html - 正则表达式捕获分隔符之间的字符串并排除它们