17

奇妙な警告が表示され、その結果、正規表現検索が機能しません。行は次のとおりです。

NSRange r = [HTML rangeOfString:@"\|(.*)\|" options:NSRegularExpressionSearch];

HTML上記の正規表現に一致するものが1つ含まれていると確信している文字列はどこにありますか。

警告は、「\ |」の最初の出現時にのみ発生し、両方には発生しません。

どんな助けでも大歓迎です!

4

2 に答える 2

56

\|はObjective-C(またはCまたはC ++)の有効なエスケープシーケンスではないため、警告が表示されます。コンパイラはそれを無視し、代わりに生の|文字を使用しているため、実際に渡す文字列はです@"|(.*)|"

必要な動作を得るには、ソースコードのバックスラッシュをエスケープして、正規表現エンジンがリテラルのバックスラッシュを認識し、|文字を代替ではなくリテラルとして解釈するようにする必要があり@"\\|(.*)\\|"ます。

于 2012-07-11T22:10:21.653 に答える
0

合計すると、Unicode形式の特殊文字シーケンスを処理している場合は、次のようなものを使用できます。

const unichar specialCharSequence='some special character';
if(specialCharSequence==L'\uxxxx')
{
   //handle the occurence of this special character
}
于 2013-08-04T21:58:07.987 に答える