2016-01-13 44 views
0

我的目標是替換字符串中的某個子字符串,但不會更改那些不是嚴格意義上的子字符串。寫下來讓我感到有些困惑,所以讓我來舉個例子。使用正則表達式替換某個字符串 - Java

說我有串

"StackOverflow Stack Overflow Stacks" 

現在我想換成"Stack",如果我使用

x.replaceAll("Stack", "") 

我會得到

"Overflow Overflow s" 
這是不希望

,而是我想要以下內容:

"StackOverflow Overflow Stacks" 
+2

有很多淨良好的正則表達式的教程和例子,你嘗試過這麼遠嗎? – Matten

回答

2

你的要求還不完全清楚。

您需要考慮要替換的"Stack"的條件。

一個很好的例子將是一個字邊界:x.replaceAll("\\bStack\\b", "")

這將確保"Stack"由非單詞字符包圍將被替換,而"Stack"其他情況下將保持不變。

當空白包圍你可能想更具體的,只有更換:

  • x.replaceAll("(?<=\\s)Stack(?=\\s)", "") // replaces only "Stack"
  • x.replaceAll("\\sStack\\s", "") // also gets rid of the surrounding whitespace

等...

0

可以使用Word邊界完成此操作:

使用下面的代碼是一樣的:

String abc = "StackOverflow Stack Overflow Stacks"; 
abc = abc.replaceAll("\\bStack\\b", ""); 

System.out.println(abc); 

結果打印爲StackOverflow的溢出堆棧