与正则表达式匹配时是否可以忽略字符串中的字符

XJo*_*nes 3 regex objective-c nspredicate ios

我想创建一个正则表达式,以便当我将字符串与字符串数组进行比较时,返回匹配项,正则表达式忽略某些字符。

这是一个例子。考虑以下名称数组:

{
    "Andy O'Brien",
    "Bob O'Brian",
    "Jim OBrien",
    "Larry Oberlin"
}
Run Code Online (Sandbox Code Playgroud)

如果用户输入“ob”,我希望应用程序将正则表达式谓词应用于数组,并且上述数组中的所有名称都将匹配(例如,忽略 ')。

我知道我可以运行两次匹配,第一次针对每个名称,第二次针对每个名称,并从字符串中删除被忽略的字符。我宁愿通过单个正则表达式来完成此操作,这样我就不需要两次传递。

这可能吗?这是一个 iOS 应用程序,我正在使用 NSPredicate。

编辑:使用说明

从最初的答案我意识到我不清楚。上面的例子就是一个具体的例子。我需要一个通用的解决方案,其中名称数组是一个具有不同名称的大型数组,并且我要匹配的字符串是由用户输入的。所以我不能像 [o]'?[b] 这样对正则表达式进行硬编码。

另外,我知道如何进行不区分大小写的搜索,因此不需要答案来关注这一点。只需要一个解决方案来忽略我不想匹配的字符。

Phr*_*ogz 5

由于您已经放弃了所有显示其实现方式的答案,因此您只剩下答案:

不,这是不可能的。正则表达式没有“忽略”字符的选项。您唯一的选择是修改正则表达式以匹配它们,或者对源文本进行传递以删除您想要忽略的字符,然后进行匹配。(当然,那么您可能会遇到将“清理后的”文本与实际源文本相关联的问题。)