2016-12-17 12 views
0

Java文字列内のテキストを置き換えたいのですが、$と&で定義されたセクション内にテキストがある場合は置換しません。 例:文字列 "$ foo & bar foo"を置き換えるテキストfooは "$ foo & bar $ foo &"となります。 代替テキストは、$と&を使用してエスケープする必要がありますが、エスケープが既に適用されている場合は使用しないでください。現在、私は正規表現([^\\$]|^)text([^&]|$)を使用していますが、それはかなりうまくいきますが、シンボルの1つだけが見つかった場合、正規表現は一致しません。 例:テキスト "bar $ foo"の正規表現([^\\$]|^)foo([^&]|$)は一致しませんが、の両方がの場合にのみ一致します。文字列内のテキストを例外と置き換えます。

+0

は$と&の間に複数の単語があるだろうか? – TheLostMind

+0

@TheLostMindいいえ、ただ一つ – greywolf82

+0

あなたがやっていることのいくつかの小さな、完全かつ実行可能な例を追加してください。 –

答えて

3

使用$ため否定後読み&ため否定先読み。これはあなたのために動作します:

public static void main(String[] args) { 
    String s = "$foo& bar foo"; 
    s= s.replaceAll("(?<!\\$)foo(?!&)", "\\$foo&"); 
    System.out.println(s); 
} 

O/P:

$foo& bar $foo& 
関連する問題