我正在使用Parse作为我的iOS应用程序的后端(他们将自己的框架添加到项目中,添加与其数据库一起使用的方法)。它是一个简单的数据库,包含一个列,其中包含我存储的文件的名称。现在,当我使用他们的containsString
方法进行查询时,该方法仅返回每个字母的匹配大小写的结果。所以搜索“约翰”不会返回“约翰”。但是他们可以选择使用允许正则表达式输入的matchesRegex
方法。我想知道如何使用正则表达式来说结果应该包含我的输入字符串,但需要忽略它的情况?因此,如果我搜索“john”,它将与“John”,“JOHN”等匹配。
所以它看起来像:
[query whereKey:@"file_name" matchesRegex:@"something_that_returns_all_johns"];
他们使用PERL兼容的正则表达式。
答案 0 :(得分:4)
在PCRE中,您可以将正则表达式的一部分标记为不区分大小写,方法是将其包含在(?i:...)
中或在(?i)
之前。通常有一个单独的带外方式来表示整个正则表达式不区分大小写,但如果Parse API不提供这种方式,那么您可以只应用部分 - 整个正则表达式的正则表达式方法,使用以下任一方法:
[query whereKey:@"file_name" matchesRegex:@"(?i:john)"];
[query whereKey:@"file_name" matchesRegex:@"(?i)john"];
(假设Parse支持PCRE的这些功能:它可能会这样做。)