NSRegularExpression发出警告

时间:2012-04-23 10:21:36

标签: iphone objective-c regex xcode nsregularexpression

这是代码

NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)" options:NSRegularExpressionCaseInsensitive error:&error];

代码本身有效,但会发出此警告:

"Unknown escape sequence \." 

我也尝试过选项:

NSRegularExpressionCaseInsensitive|NSRegularExpressionAnchorsMatchLines

但仍然存在错误。任何人都可以解释为什么会出现此错误以及如何将其删除。

1 个答案:

答案 0 :(得分:5)

如果将正则表达式编写为字符串文字并且它包含反斜杠,则必须使用第二个反斜杠来转义它们,因为反斜杠也用于转义某些特殊字符(例如\n,{{1}在字符串文字中。等等。

因此,如果您希望正则表达式包含\t,则必须将其写为\.。同样,这仅适用于使用字符串文字的情况,而不适用于从文件加载正则表达式的情况。

如果你真的想要一个没有反斜杠的句号(这实际上是你现在拥有的),请删除反斜杠以消除警告。