我正在使用 Parse作为我的 iOS 应用程序的后端(他们将自己的框架添加到项目中,添加用于他们的数据库的方法)。它是一个简单的数据库,其中包含一个列,其中包含我存储的文件的名称。现在,当我使用他们的 containsString
方法进行查询时,该方法只返回每个字母都具有匹配大小写的结果。所以搜索“john”不会返回“John”。但他们确实可以选择使用允许正则表达式输入的 matchesRegex
方法。我想知道如何使用正则表达式表示结果应包含我的输入字符串,但需要忽略其大小写?因此,如果我搜索“john”,它将与“John”、“JOHN”等匹配。
所以它看起来像这样:
[query whereKey:@"file_name" matchesRegex:@"something_that_returns_all_johns"];
他们使用 PERL 兼容的正则表达式。
最佳答案
在 PCRE 中,您可以将正则表达式的一部分标记为不区分大小写,方法是将其包装在 (?i:...)
中或在其前面加上 (?i)
。通常有一种单独的带外方式来指示整个正则表达式不区分大小写,但如果 Parse API 不提供这种方式,那么您可以只应用部分 -对整个正则表达式的正则表达式方法,使用以下任一方法:
[query whereKey:@"file_name" matchesRegex:@"(?i:john)"];
[query whereKey:@"file_name" matchesRegex:@"(?i)john"];
(假设 Parse 支持 PCRE 的这些特性:它可能支持)。
关于objective-c - 使用 PERL 兼容的正则表达式忽略查询中的字符串大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9370081/