使用PERL兼容的正则表达式忽略查询中的字符串大小写

时间:2012-02-20 23:38:25

标签: objective-c ios regex perl

我正在使用Parse作为我的iOS应用程序的后端(他们将自己的框架添加到项目中,添加与其数据库一起使用的方法)。它是一个简单的数据库,包含一个列,其中包含我存储的文件的名称。现在,当我使用他们的containsString方法进行查询时,该方法仅返回每个字母的匹配大小写的结果。所以搜索“约翰”不会返回“约翰”。但是他们可以选择使用允许正则表达式输入的matchesRegex方法。我想知道如何使用正则表达式来说结果应该包含我的输入字符串,但需要忽略它的情况?因此,如果我搜索“john”,它将与“John”,“JOHN”等匹配。

所以它看起来像:

[query whereKey:@"file_name" matchesRegex:@"something_that_returns_all_johns"];

他们使用PERL兼容的正则表达式。

1 个答案:

答案 0 :(得分:4)

在PCRE中,您可以将正则表达式的一部分标记为不区分大小写,方法是将其包含在(?i:...)中或在(?i)之前。通常有一个单独的带外方式来表示整个正则表达式不区分大小写,但如果Parse API不提供这种方式,那么您可以只应用部分 - 整个正则表达式的正则表达式方法,使用以下任一方法:

[query whereKey:@"file_name" matchesRegex:@"(?i:john)"];
[query whereKey:@"file_name" matchesRegex:@"(?i)john"];

(假设Parse支持PCRE的这些功能:它可能会这样做。)