要查找和替换的正则表达式模式

时间:2015-03-06 12:49:04

标签: java regex replace

正则表达式应识别像'0000046qwerty'这样的文本,并将其替换为'46qwerty'。

其他例子:

<00> 0000qw - &gt; 0qw
123 - &gt; 123个
0123 - &gt; 123个
123qw - &gt; 123qw
12003qw - &gt; 12003qw

因此,焦点主要集中在前导零和在适当场景中截断它们的方法。

我的解决方案是:(两次调用replaceFirst

text.replaceFirst("^[0]+(\\d+)", "$1").replaceFirst("^[0]*(\\d{1}\\w+)", "$1")

是否有单行正则表达式来执行操作?

4 个答案:

答案 0 :(得分:2)

Just&#34; skip&#34;前导零,留下一位数字及其后的任何符号:

text.replaceAll("^0+(\\d.*)", "$1")

答案 1 :(得分:2)

模式匹配是贪婪的,因此0 *将匹配尽可能多的零,留下至少一个数字与\ d匹配。 ^表示只删除前导零。

text.replaceAll("^0*(\\d.*)", "$1")

答案 2 :(得分:0)

使用这样的正则表达式:这适用于所有情况:P

public static void main(String[] args) {
    String text="0000qw";
    System.out.println(text.replaceAll("^0{2,}(?=0[^0])",""));
}

O / P:

0qw

答案 3 :(得分:0)

text.replaceFirst("^[0]+(\\d+)", "$1")

一起使用
0000qw -> 0qw

12003qw -> 12003qw

为什么要拨打第二个替换第一个?