gpt4 book ai didi

ios - 为什么此 Regex 代码不适用于 P.O.箱子串?

转载 作者:行者123 更新时间:2023-11-29 11:48:41 25 4
gpt4 key购买 nike

我正在尝试检查字符串是否为 P.O.盒子。我已经使用 2 个不同的 Web 浏览器测试了我的 Regex 字符串,它工作正常。当我如图所示使用它时,我找不到匹配项。

NSString *string = @"P.O. Box 123";
NSString *regexString = @"/\\b[P]\\W*?\\s*?\\.*?\\s*?[o]\\W?\\s*?\\.*?\\s*?(st|stal)?\\W*?\\s*?(box|office) /igm";
NSError *error = nil;
NSRegularExpression *expression = [NSRegularExpression regularExpressionWithPattern:regexString options:NSRegularExpressionCaseInsensitive error:&error];
NSRange range = NSMakeRange(0, string.length);
if ([expression numberOfMatchesInString:string options:0 range:range] > 0) {
NSLog(@"Matches");
}

最佳答案

您应该从字符串模式 中删除正则表达式分隔符和选项。 m 修饰符不是必需的,因为您内部没有 ^$ anchor ,而 g 修饰符的意思是与 numberOfMatchesInString 一起使用时的默认值。

使用

NSString *regexString = @"\\b[P]\\W*?\\s*?\\.*?\\s*?[o]\\W?\\s*?\\.*?\\s*?(st|stal)?\\W*?\\s*?(box|office) ";

另请注意,在此处的大多数情况下,您可以将惰性量词替换为贪婪量词。 \W*?\s*? 可以成功合并到 \W* 中,因为 \W 也匹配空格。例如。这也行得通:

NSString *regexString = @"\\bP\\W*o\\W?\\s*\\.*\\s*(st|stal)?\\W*(box|office) ";

参见 online Objective-C demo

关于ios - 为什么此 Regex 代码不适用于 P.O.箱子串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42182165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com