2011-11-17 64 views
2

我需要能夠與String類的replaceAll方法中使用的正則表達式與除了一個.*取代的*所有實例已尾隨\正則表達式爲String.replaceAll

即轉換將是

[any character]*[any character] => [any character].*[any character] 
* => .* 
\* => \* (i.e. no conversion.) 

有人能幫我嗎?

回答

4

使用回顧後。

String resultString = subjectString.replaceAll("(?<!\\\\)\\*", ".*"); 

說明:

"(?<!" +  // Assert that it is impossible to match the regex below with the match ending at this position (negative lookbehind) 
    "\\\\" +  // Match the character 「\」 literally 
")" + 
"\\*"   // Match the character 「*」 literally 
+0

大。謝謝。這工作像一個魅力。 –

+0

@ SalmanA.Kagzi歡迎您。 – FailedDev

1

有可能沒有捕捉組做的,但這應該工作:

myString.replaceAll("\\*([^\\\\]|$)", "*.$1"); 
相關問題