RegexKitLite无法正确匹配NSString

时间:2011-11-06 19:06:48

标签: objective-c regexkitlite

好吧,我正在尝试编写一些代码,用于从NSString中删除包含撇号的单词。要做到这一点,我决定使用正则表达式,我写了一个,我使用这个网站测试过:http://rubular.com/r/YTV90BcgoQ

此处,表达式为:\S*'+\S

如网站所示,包含撇号的字词匹配。但出于某种原因,在我正在编写的应用程序中,使用此代码:

    sourceString = [sourceString stringByReplacingOccurrencesOfRegex:@"\S*'+\S" withString:@""];

不会返回任何正面结果。通过NSLogging'sourceString',我注意到输出中仍然存在'Do not'和'Does not'之类的单词。

似乎我的表达式不是问题,但也许RegexKitLite不接受某些类型的表达式?如果有人知道这里发生了什么,请赐教!

1 个答案:

答案 0 :(得分:1)

Literal NSString使用\作为转义字符,以便您可以将换行符\n放入其中。 Regexes 使用反斜杠作为\S等字符类的转义字符。当您的文字字符串通过编译器运行时,反斜杠被视为转义字符,并且不会使其成为正则表达式模式。

因此,您需要在文字NSString中转义反斜杠本身,以便最终在用作模式的字符串中使用反斜杠:@"\\S*'+\\S"

您应该已经看到编译器警告"未知转义序列" - 不要忽视这些警告!