gpt4 book ai didi

ios - NSPredicate 上的正则表达式未按预期工作

转载 作者:行者123 更新时间:2023-11-28 22:11:01 25 4
gpt4 key购买 nike

我实际上完全迷失了在 NSPredicate 中使用正则表达式的尝试。我想要的是一个正则表达式,它可以找到句子中符合条件的所有单词的开头。事实是这行不通。

这是我的正则表达式:.*\b xxx [\w-]*(其中 xxx 是我的标准)。

这是代码

   NSString* regexString   = [NSString stringWithFormat: @".*\\b%@[\\w-]*", search];
request.predicate = [NSPredicate predicateWithFormat:@"adresse matches[cd] %@", regexString];

地址是我的核心数据对象的字符串属性。但由于某些不明原因,这不起作用。有人可以帮助我吗?

例如:城市三明治 67200 斯特拉斯堡

.*\bStra[\w-]* 会找到 STRASBOURG

但是 .*\b672[\w-]*.*\bSAND[\w-]* 不会产生任何结果。

编辑

我最终放弃并写了 (adresse BEGINSWITH[c] %@) OR (adresse CONTAINS[c] %@) 语句,其中 %@ 是搜索词项。

但是,如果有人可以向我解释为什么 obj-c 中的简单正则表达式公式看起来像在太空中发射火箭,那么这个话题仍然悬而未决。奇怪的是正则表达式确实有效,但只达到了一半,就像没有严格遵守规则一样。我现在真的很困惑。

最佳答案

我没有使用与您相同的对象,而是使用了另一个我理解得更多并且看起来更像 Java 的对象;)

NSString* string = @"CITY SANDWITCH 67200 STRASBOURG";
NSString* search = @"SAND"; // work also with 672 or STRAS
NSString* regexString = [NSString stringWithFormat: @".*\\b(%@[\\w]*)[\\s*\\w*]*", search];
NSError *error = NULL;

NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:regexString
options:0
error:&error];

NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@"$1"];

NSLog(@"-->%@", modifiedString);

关于ios - NSPredicate 上的正则表达式未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22935839/

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