2014-12-05 43 views
3

所以,讓我們說我得到了我的正則表達式得到什麼用String.replaceAll除去被()

String regex = "\d*"; 

尋找任何數字。

現在,我也得到了輸入的字符串,例如

String input = "We got 34 apples and too much to do"; 

現在我想替換爲「」所有的數字,做這樣的:

input = input.replaceAll(regex, ""); 

現在,當打印輸入我「我們有蘋果,做得太多」。它工作,它用「」替換了3和4。

現在我的問題:有沒有什麼辦法 - 也許現有的庫? - 取得實際取代的內容?

這裏的例子非常簡單,只是爲了理解它是如何工作的。希望將其用於更復雜的輸入和正則表達式。

感謝您的幫助。

+2

這應有助於:http://stackoverflow.com/questions/375420/java-equivalent-to-phps-preg-替換回調 – Enissay 2014-12-05 19:53:23

回答

2

您可以使用追加和替換過程的Matcher

String regex = "\\d*"; 

Pattern pattern = Pattern.compile(regex); 
Matcher matcher = pattern.matcher(input); 

StringBuffer sb = new StringBuffer(); 
StringBuffer replaced = new StringBuffer(); 
while(matcher.find()) { 
    replaced.append(matcher.group()); 
    matcher.appendReplacement(sb, ""); 
} 
matcher.appendTail(sb); 

System.out.println(sb.toString()); // prints the replacement result 
System.out.println(replaced.toString()); // prints what was replaced 
+1

比@ Enissay說和工作更短!非常感謝! – Frozn 2014-12-05 20:03:54