2017-03-08 136 views
0

我有字符的字符串中刪除字符, String a = "abcd000324";正則表達式從字符串中後字母

我想用一個正則表達式產生的字符串從字符串中刪除0的abcd324

是否有一個正則表達式值來替換字母后的某個字符(即0),但不會刪除該字符串。它還需要在字符串後面出現數字的情況下工作,即abcd0034505應該爲abcd34505

+0

「後的字母數字字符」 ......難道真的是「經過字母字符」? –

+0

在下列情況下應該做什麼:'abcd05050505'? –

+0

這將導致abcd5050505,我只想刪除字母值後的整數值,直到出現另一個值。 – DevelopingDeveloper

回答

3

喲查詢使用該正則表達式:

^(\D*)0+ 

,並通過使用"$1"替換它哪個是哪個是\D*即0或多個非數字字符第一組的反向參考。

RegEx Demo

Java代碼:

String repl = input.replaceFirst("^(\D*)0+", "$1"); 
+1

這工作完美。感謝您也解釋您的正則表達式。 – DevelopingDeveloper

2

爲了避免必須更換該正則表達式的一部分返回到本身,使用正回顧後((?<=...)):

(?<=\D)0+ 

這將與零序列只有如果它們前面有一些非數字字符。現在,您可以

str.replaceFirst("(?<=\\D)0+", "") 

,而無需通過任何引用捕獲組。

Link to Regex101 example.

+0

'(?<= \ D +)'使它成爲一個可變長度的後視,在Java和許多其他正則表達式中不允許。 – anubhava

+1

@anubhava。謝謝你的收穫。單字符匹配是所有必需的,如此修復。 –

+0

是的這應該現在工作++ – anubhava