2012-03-02 3 views
1

今、私は文字列を持っているので、\ nを削除して\ uを\\ uに変換したいと思います。正規表現

文字列に\\ uが含まれている場合は、\\ uに変更しません。

私はString.replaceAll()を使いたいですが、正規表現を書く方法はわかりません。

私を助けてください。ありがとう。

例:

\ U => U

\\ U => \\ \\ U(何もしない)

+2

'\ u'を' \\ u'に変更すると、 '' \\ u '' '' \\\\ u "'を指定することを意味しますか? (いくつかの例が役に立ちます!:-) – aioobe

+0

@aioobeあなたのアドバイスありがとうございました:) – Felix

答えて

4

はここで、負のルックの背後に使用したソリューションです。 (変更は、それがない\によって先行し\u\\uである場合のみ。)

String in = "lorem ipsum \\u dolor \\\\u sit \n amet"; 

System.out.println(in); 
System.out.println(in.replaceAll("\\n", "") 
        .replaceAll("(?<!\\\\)\\\\u", "\\\\\\\\u")); 

プリント:除去

lorem ipsum \u dolor \\u sit 
amet 
lorem ipsum \\u dolor \\u sit amet 
  • \n
  • \u\\uに変更さ
  • しかし、\\uはpそのまま留保されています。
+0

それは動作します。ありがとう:) – Felix

+0

あなたは多くのエスケープの必要性を説明できますか? \\エスケープするのに十分ではありません\(私は特にJavaに精通していません) – RedBaron

+0

Java文字列リテラルのバックスラッシュはエスケープする必要があるので、\ ""は文字列\を表します。正規表現は\特別に扱いますので、別のレベルのエスケープがあります。 – aioobe