要查找和替换的正则表达式模式
Regex Pattern to Find and Replace
正则表达式应识别“0000046qwerty”之类的文本并将其替换为“46qwerty”。
其他示例:
0000qw --> 0qw
123 --> 123
0123 --> 123
123qw --> 123qw
12003qw --> 12003qw
因此,重点主要放在前导零以及在适当情况下截断它们的方法。
我的解决方案是:(调用 replaceFirst
两次)
text.replaceFirst("^[0]+(\d+)", "").replaceFirst("^[0]*(\d{1}\w+)", "")
是否有单行正则表达式来进行操作?
像这样使用正则表达式:这适用于您的所有情况:P
public static void main(String[] args) {
String text="0000qw";
System.out.println(text.replaceAll("^0{2,}(?=0[^0])",""));
}
O/P :
0qw
只需 "skip" 前导零,留下一位数字及其后的任何符号:
text.replaceAll("^0+(\d.*)", "")
模式匹配是贪婪的,因此 0* 将匹配尽可能多的零,至少留下一个数字与 \d 匹配。 ^ 表示只删除前导零。
text.replaceAll("^0*(\d.*)", "")
text.replaceFirst("^[0]+(\d+)", "")
与
合作
0000qw -> 0qw
12003qw -> 12003qw
为什么叫第二个replaceFirst?
正则表达式应识别“0000046qwerty”之类的文本并将其替换为“46qwerty”。
其他示例:
0000qw --> 0qw
123 --> 123
0123 --> 123
123qw --> 123qw
12003qw --> 12003qw
因此,重点主要放在前导零以及在适当情况下截断它们的方法。
我的解决方案是:(调用 replaceFirst
两次)
text.replaceFirst("^[0]+(\d+)", "").replaceFirst("^[0]*(\d{1}\w+)", "")
是否有单行正则表达式来进行操作?
像这样使用正则表达式:这适用于您的所有情况:P
public static void main(String[] args) {
String text="0000qw";
System.out.println(text.replaceAll("^0{2,}(?=0[^0])",""));
}
O/P :
0qw
只需 "skip" 前导零,留下一位数字及其后的任何符号:
text.replaceAll("^0+(\d.*)", "")
模式匹配是贪婪的,因此 0* 将匹配尽可能多的零,至少留下一个数字与 \d 匹配。 ^ 表示只删除前导零。
text.replaceAll("^0*(\d.*)", "")
text.replaceFirst("^[0]+(\d+)", "")
与
合作0000qw -> 0qw
12003qw -> 12003qw
为什么叫第二个replaceFirst?