我有一个正则表达式的任务。我有一个具有不同模式的NSRegularExpression
个对象列表。我还有一个NSString
对象来定义一个源。我需要找到哪个正则表达式(来自给定列表)匹配源的 BEGINNING 。
有没有办法用 Objective-C ?
来实现例如:
表达式模式
[a-z]
[A-Z]
[1-9]
源
Hello32
结果
由于字母H
,表达式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
完全相同)。