1

ここにコードがあります

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

それでもエラーは解決しません。このエラーが発生する理由と、それを削除する方法を誰でも説明できますか?

4

1 に答える 1

5

\n正規表現を文字列リテラルとして記述し、それにバックスラッシュが含まれている場合、バックスラッシュは文字列リテラル内の一部の特殊文字 (例:など)のエスケープにも使用されるため、2 つ目のバックスラッシュを使用してそれらをエスケープする必要があり\tます。

したがって、正規表現に を含めたい場合は\.、 のように記述する必要があります\\.。繰り返しますが、これは文字列リテラルを使用する場合にのみ適用され、ファイルから正規表現をロードする場合には適用されません。

実際にバックスラッシュなしでピリオドを使用したい場合 (これは事実上現在のものです)、バックスラッシュを削除して警告を取り除きます。

于 2012-04-23T10:26:11.963 に答える