2014-09-12 124 views
0

我試圖替換'。'兩個不是數字符號。我用replaceAll和regEx替換部分正則表達式

string.replaceAll("\\D\\.\\D", "_"); 

但它改變和符號附近'。'我可以用Java方法解決這個問題,還是我應該編寫自己的方法?

+0

你可能會想在正則表達式閱讀起來(非)捕捉組和預讀/回顧後。 – gpgekko 2014-09-12 12:22:43

+2

你想要替換什麼?目前,出於'AB.CD'的模式,這將返回'A.D',在'''''' – Stewart 2014-09-12 12:22:45

+0

'的兩側匹配1個字符替換'「。」'爲''。「'。我在我的回答中假設你想用'「」替換'「。」'''。 – TheLostMind 2014-09-12 12:27:11

回答

1

這可能會爲你工作:

yourString.replaceAll("(\\D)[.](\\D)","$1$2"); 
0

使用正則表達式是這樣的: (?<=\D)(\.)(?=\D)

demo here

您的問題是:\ d部分也將被選中。

例如:

System.out.println("1.1".replaceAll("(?<=\\D)(\\.)(?=\\D)", "")); // output : 1.1 
System.out.println("a.b".replaceAll("(?<=\\D)(\\.)(?=\\D)", "")); // output : ab 
0

目前,在一個圖案AB.CD的,這將返回A.D,具有匹配的和只更換1個炭任一側上的.的(在BC

這是我認爲你想要的:

string.replaceAll("[^0-9]+\\.[^0-9]+", "."); 

但我是叔叔從你的描述中提出你想要達到的目標。

+0

不,他不希望數字被替換。他只想要點被替換 – TheLostMind 2014-09-12 12:25:28

+0

在這種情況下,我不確定'replaceAll'是否是正確的工具。它是否適用於捕獲的組? – Stewart 2014-09-12 12:27:06