0

よし、アポストロフィを含む単語を NSString から削除するコードを書き込もうとしている。これを行うために、私は正規表現を使用することに決め、次の Web サイトを使用してテストした正規表現を作成しました: http://rubular.com/r/YTV90BcgoQ

ここで、式は次のとおりです。\S*'+\S

ウェブサイトに示されているように、アポストロフィを含む単語一致します。しかし、何らかの理由で、私が書いているアプリケーションでは、次のコードを使用しています:

    sourceString = [sourceString stringByReplacingOccurrencesOfRegex:@"\S*'+\S" withString:@""];

肯定的な結果は返されません。「sourceString」を NSLogging すると、「しない」や「しない」などの単語がまだ出力に含まれていることがわかります。

私の表現に問題があるようには見えませんが、RegexKitLite は特定の種類の表現を受け入れないのでしょうか? 誰かがここで何が起こっているのか知っているなら、私に教えてください!

4

1 に答える 1

1

リテラルはエスケープ文字としてNSString使用\されるため、改行などを入れることができ\nます。正規表現は、 などの文字クラスのエスケープ文字としてバックスラッシュ\S使用します。リテラル文字列がコンパイラを介して実行されると、バックスラッシュはエスケープ文字として扱われ、正規表現パターンにはなりません。

NSStringしたがって、 pattern: として使用される文字列にバックスラッシュが含まれるようにするには、リテラル内のバックスラッシュ自体をエスケープする必要があります@"\\S*'+\\S"

「不明なエスケープ シーケンス」に関するコンパイラの警告が表示されているはずです。これらの警告を無視しないでください。

于 2011-11-06T19:42:13.493 に答える