iOS-正则表达式-搜索单词所有出现的前缀

iOS-正则表达式-搜索单词所有出现的前缀,ios,regex,Ios,Regex,我正在使用iPhone SDK,需要帮助 我有以下搜索词数组: f, f, last, m 和一个字符串(为了方便起见,最前面的数字只是索引): 预期结果范围(位置、长度):(0,1)(30,1)(21,4)(10,1) 我希望有一个正则表达式匹配字符串中的所有搜索词,但前提是它们是单词的前缀。当搜索项出现N次时,它将只匹配前N个前缀(在示例中,“f”输入了两次,因此没有返回(45,1)处可能的匹配项) 我试着写了很多可能的正则表达式,但都没有得到正确的结果。我得出的结论是“\b”元字符不能

我正在使用iPhone SDK,需要帮助

我有以下搜索词数组:

f, f, last, m 
和一个字符串(为了方便起见,最前面的数字只是索引):

预期结果范围(位置、长度):(0,1)(30,1)(21,4)(10,1)

我希望有一个正则表达式匹配字符串中的所有搜索词,但前提是它们是单词的前缀。当搜索项出现N次时,它将只匹配前N个前缀(在示例中,“f”输入了两次,因此没有返回(45,1)处可能的匹配项)


我试着写了很多可能的正则表达式,但都没有得到正确的结果。我得出的结论是“\b”元字符不能使用,因为字符串可以包含与字母相邻的非单词字符(“firstname”;“?lastName”,…)

我不确定这仅仅是正则表达式的工作

这可以通过使用或不使用正则表达式来实现,方法是将字符串按空格分解,然后根据剩余前缀列表检查每个字符串

您保留一个前缀列表,如下所示:

[f, f, last, m]
当您与firstname匹配时,您将删除找到的前缀。在本例中,删除f:

[f, last, m]
当您再次与firstname匹配时,您将再次删除f,并且不再尝试匹配f:

[last, m]
要执行搜索,可以遍历搜索前缀数组,并使用NSString rangeOfString函数查看搜索前缀是否在前面。如果仍要使用正则表达式,则可以匹配:

@"^(f|f|last|m)"

匹配前缀时,将其从数组中删除,然后重新生成正则表达式。

谢谢,好主意。要使其完全工作,需要在此操作之前按长度降序对搜索词数组进行排序。例如,在重叠[f,fi]的情况下,字符串“first f”的术语将仅在(0,1)上匹配,除非已排序。
@"^(f|f|last|m)"