2017-09-18 13 views
0

在java中我只需要用一個單詞替換一個數字,前提是它沒有前面加「+」。 例子:如果沒有前面加「+」替換字符

- match1 
- match+1 

應該改爲:

matchone 
match+1 (no modify) 

我試着用

>>>name = name.replaceAll("([^+])1", "one"); 
matcone          //required "matchone" 

但它無法正常工作。有什麼建議麼?

謝謝

+0

是隻更換號碼的要求「1」?你的問題沒有具體說明,但是你的正則表達式不是這樣。 –

+0

是的,我只需要替換「1」 – Pecana

+1

你需要指定你的意思是「但它不工作」。你得到的輸出是什麼,你期望的輸出是什麼? –

回答

5

使用負回顧後:

name = name.replaceAll("(?<!\\+)1", "one"); 
+0

您的意思是:「look-behind」 – laune

+0

這給出了「字符串文字中的非法轉義字符」:-( – Pecana

+0

這完美的作品!謝謝! – Pecana

1

你的正則表達式是一個在食用前性格和更換以「一」一樣,所以在第一種情況下輸出爲「 matcone」。

可以使用負向後看錶達(?<!)以匹配前面沒有「+」任何「1」:

name = name.replaceAll("(?<!\\+)1", "one"); 
相關問題