0

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

在这里,表达式是:\S*'+\S

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

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

不返回任何积极的结果。通过 NSLogging 'sourceString',我注意到像'Don't' 和'Doesn't' 这样的词仍然存在于输出中。

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

4

1 回答 1

1

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

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

您应该已经看到关于“未知转义序列”的编译器警告——不要忽略这些警告!

于 2011-11-06T19:42:13.493 回答