搜索字符串的开头并仅匹配整个

时间:2013-11-16 17:32:44

标签: ios objective-c regex

我需要执行搜索,开头一个字符串得到匹配的整个单词,因为整个单词选项我在想Regex ???

这些是我试图使用的方法,但承认对obj-c中的正则表达式知之甚少

- (BOOL)searchText:(NSString *)searchString inString:(NSString *)text {

    NSRegularExpression *regex = [self regularExpressionWithString:searchString];

    NSArray *found = [regex matchesInString:text options:NSRegularExpressionCaseInsensitive|NSRegularExpressionAnchorsMatchLines range:NSMakeRange(0, text.length)];

    if (found.count > 0)
        return YES;
    else
        return NO;
}

- (NSRegularExpression *)regularExpressionWithString:(NSString *)string {

    NSError *error = NULL;
    NSString *pattern = [NSString stringWithFormat:@"\\b%@\\b", string];

    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:&error];

    if (error)
        NSLog(@"Couldn't create regex with given string and options");

    return regex;
}

搜索到的字符串将很长(250个字符)并且我将其分解为单词,然后我在字符串的前面寻找匹配的短语,如果没有匹配,我会删除第一个单词并重新开始。< / p>

如果搜索到的字符串是“我没有机会介绍我自己......”

搜索以“i”开头的短语,它可能会按照最长的顺序找到这些结果......

I hate snow badly
I swim daily
I have
is

这些结果应该全部失败,但是现在它匹配“我有”,我需要一个只有“我没有”的搜索才能在返回的结果中匹配,而不是我有,然后我会移动不要下一个单词并搜索以“have not”开头的短语

为了进一步复杂化,我需要忽略单词的标点符号。

1 个答案:

答案 0 :(得分:0)

我刚刚从一个更近期的问题链接到这里,所以我尝试了一个可能有用的表达式:

"I\\shaven't.*\\."

基本上它发现“我没有”并且匹配所有内容直到句子的结尾。可能对遇到类似问题的人有用。