2016-12-17 28 views
0

我想替換java字符串中的某些文本,但如果文本位於由$和&定義的節內部,我不想替換它。 示例:使用替換文本foo的字符串「$ foo & bar foo」將是「$ foo & bar $ foo &」。 因此,替換文本必須使用$和&進行轉義,但如果已經應用轉義,則不能轉義。目前我正在使用正則表達式([^\\$]|^)text([^&]|$),它工作得很好,但如果只找到其中​​一個符號,則正則表達式不匹配。 示例:對於文本「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&