正则表达式在字母字符后从字符串中删除字符

时间:2017-03-08 19:05:50

标签: java regex string

我有一串字符, String a = "abcd000324";

我想使用正则表达式从字符串中删除0,以产生字符串abcd324

是否有一个正则表达式值来替换字母字符后的某个字符(即0)但不删除324.如果字符串后面出现的数字也需要工作,即abcd0034505应该导致abcd34505

2 个答案:

答案 0 :(得分:3)

Yo可以使用此正则表达式进行搜索:

"$1"

并使用\D*替换它,String repl = input.replaceFirst("^(\D*)0+", "$1"); 是第一组的反向引用,即compile('com.google.android.gms:play-services-base:10.2.0') { exclude group: 'com.android.support' } ,即0个或更多非数字字符。

RegEx Demo

Java代码:

compile('com.google.android.gms:play-services-base:10.2.0') {
                exclude group: 'com.android.support',  module: 'support-v4'
    }

答案 1 :(得分:2)

为了避免必须将部分正则表达式替换回自身,请使用正向lookbehind((?<=...)):

(?<=\D)0+

如果它们前面有一些非数字字符,那么它将匹配一系列零 。你现在可以做

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

无需传递对捕获组的任何引用。

Link to Regex101 example.