我正在使用RegexKitLite而我正在尝试匹配模式 以下正则表达式模式不会捕获包含带有标题的N的单词:ñ。 我缺少字符串转换吗?
subjectString = @"define_añadir";
//regexString = @"^define_(.*)"; //this pattern does not match, so I assume to add the ñ
//regexString = @"^define_([.ñ]*)"; //tried this pattern first with a range
regexString = @"^define_((?:\\w|ñ)*)"; //tried second
NSString *captured= [subjectString stringByMatching:regexString capture:1L];
//I want captured == añadir
答案 0 :(得分:0)
对我来说看起来像编码问题。您要么将源代码保存在无法处理该字符的编码中(如ASCII),要么编译器使用错误的编码来读取源文件。回到原始的正则表达式,尝试创建这样的主题字符串:
subjectString = @"define_a\xC3\xB1adir";
或者这个:
subjectString = @"define_a\u00F1adir";
如果可行,请检查源代码文件的编码,并确保它与编译器期望的编码相同。
编辑:我从未使用过iPhone技术堆栈,但根据this doc,您应该使用stringWithUTF8String
方法创建NSString,而不是@""
文字语法。实际上,它表示你不应该在代码中使用非ASCII字符(即,0x00..0x7F
范围内的任何字符);这样你就不用担心源文件的编码了。无论您使用何种语言或工具集,这都是一个很好的建议。