2016-04-19 71 views
1

我是新來的正則表達式,我有一個表達式,我必須寫作工作。我正在尋找使用replaceAll()來做到這一點,但我不確定我是否可以使用一個正則表達式來做我正在提議的內容。將兩個正則表達式與replaceAll()相結合

我必須將格式爲"abc12378"的字符串更改爲"$$$ $$$ 78"。我可以用兩個不同的正則表達式做到這一點沒有問題:

  • 字符串:"abc12378"
  • 正則表達式:"([1-6])"
  • 更換:"\$"
  • 結果:"$$$$$$78"

或者

  • 字符串:"$$$$$$78"
  • 正則表達式:"(.{3})"
  • 更換:"$1 "
  • 結果:$$$ $$$ 78

你就會知道,如果我能做到這一點有一個組合的replaceAll()?

任何幫助將不勝感激。

+0

您可以通過''$$$替換三個字符。 [查找:'(。{3})'。替換:'$$$'](https://regex101.com/r/sT4lT0/1) – Tushar

+1

https://regex101.com/r/uE3gD5/2 – rock321987

+0

你還沒有提供任何關於你的字符串的信息期待或您想要替換的字符串。你需要替換前6個字符嗎?如果字符串沒有6個字符會怎麼樣?你爲什麼用'[1-6]'?這是否意味着你期望數字的前3位數字小於6? – 11thdimension

回答

0

這種單一replaceAll調用做你想做的,實際上它只是替換每個組的3個字母數字字符由"$$$ "

String s = "abc12378"; 
System.out.println(s.replaceAll("[a-z0-9]{3}", "\\$\\$\\$ ")); 

輸出

$$$ $$$ 78 

假設你有一個或多個字符,這裏是你應該如何繼續:

String s = "123456789"; 
System.out.println(s.replaceAll("[a-z0-9]{3}(?!$)", "\\$\\$\\$ ")); 

輸出

$$$ $$$ 789 
+0

只是出於好奇(爲了將來的參考) - 如果最後三位數字也是三個一組的話呢?例如 123456789.這是行不通的,因爲它會把它變成XXX XXX XXX而不是XXX XXX 789 – Oaryx

+0

可能的重複:http://stackoverflow.com/questions/17969436/java-regex-capturing-groups – menssana

+0

你簡單的使用相同的方法,但在從0到長度-3的子字符串中,然後將最後3個字符添加到它。 –