Objective-C在字符串中查找第一个匹配的正则表达式

时间:2015-10-05 08:11:44

标签: objective-c regex

我有一个正则表达式的任务。我有一个具有不同模式的NSRegularExpression个对象列表。我还有一个NSString对象来定义一个源。我需要找到哪个正则表达式(来自给定列表)匹配源的 BEGINNING

有没有办法用 Objective-C

来实现

例如:

表达式模式

  1. [a-z]
  2. [A-Z]
  3. [1-9]
  4. Hello32

    结果

    由于字母H

    表达式2 适合来源的开头。

2 个答案:

答案 0 :(得分:1)

你为什么不试试呢?

NSString *testString = @"Hello";

NSArray *patterns = @[
    @"[a-z]",
    @"[A-Z]",
    @"[1-9]",
];

for (NSString *pattern in patterns) {
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern
                                                                           options:0
                                                                             error:NULL];
    BOOL matchAtStart = [regex rangeOfFirstMatchInString:testString
                                                 options:0
                                                   range:(NSRange){0, testString.length}].location == 0;
    NSLog(@"'%@': %@", pattern, @(matchAtStart));
}

答案 1 :(得分:0)

您可以在\A(?:前加)并将\A(?:[a-z]) \A(?:[A-Z]) \A(?:[1-9]) 附加到每个模式,以强制它们在字符串的开始处匹配。作为示例提供的模式将变为:

\A
  • ^是字符串开始的锚点(当Multiline标志未设置时,其行为与basicHTTPBinding完全相同)。