好的,我正在尝试编写一些代码,从NSString中删除包含撇号的单词。为此,我决定使用正则表达式,并编写了一个使用这个网站进行测试的表达式:http://rubular.com/r/YTV90BcgoQ
在这里,表达式是:\S*'+\S
如网站所示,包含撇号的单词是匹配的。但出于某种原因,在我编写的应用程序中,使用了以下代码:
sourceString = [sourceString stringByReplacingOccurrencesOfRegex:@"\S*'+\S" withString:@""];不会返回任何正面的结果。通过NSLogging 'sourceString',我注意到输出中仍然存在‘不要’和‘Don’这样的单词。
我的表达式似乎不是问题所在,但也许RegexKitLite不接受某些类型的表达式?如果有人知道这里发生了什么,请告诉我!
发布于 2011-11-06 19:42:13
文字NSString使用\作为转义字符,这样就可以将换行符\n之类的内容放入其中。Regexes还使用反斜杠作为字符类(如\S )的转义字符。当您的文本字符串在编译器中运行时,反斜杠将被视为转义字符,而不是将其转换为regex模式。
因此,您需要在文本NSString中转义反斜杠本身,以便在用作模式:@"\\S*'+\\S"的字符串中以反斜杠结束。
你应该看到一个关于“未知转义序列”的编译器警告--不要忽视那些警告!
https://stackoverflow.com/questions/8029594
复制相似问题