正则表达式应识别像'0000046qwerty'这样的文本,并将其替换为'46qwerty'。
其他例子:
<00> 0000qw - &gt; 0qw因此,焦点主要集中在前导零和在适当场景中截断它们的方法。
我的解决方案是:(两次调用replaceFirst
)
text.replaceFirst("^[0]+(\\d+)", "$1").replaceFirst("^[0]*(\\d{1}\\w+)", "$1")
是否有单行正则表达式来执行操作?
答案 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
为什么要拨打第二个替换第一个?