这是代码
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
但仍然存在错误。任何人都可以解释为什么会出现此错误以及如何将其删除。
答案 0 :(得分:5)
如果将正则表达式编写为字符串文字并且它包含反斜杠,则必须使用第二个反斜杠来转义它们,因为反斜杠也用于转义某些特殊字符(例如\n
,{{1}在字符串文字中。等等。
因此,如果您希望正则表达式包含\t
,则必须将其写为\.
。同样,这仅适用于使用字符串文字的情况,而不适用于从文件加载正则表达式的情况。
如果你真的想要一个没有反斜杠的句号(这实际上是你现在拥有的),请删除反斜杠以消除警告。