我有一串数字,数字的前置和后置都可能为0,要求实现下面的2个正则表达式
1. 前置
例如: 0010 --》 10,0000--》""
2. 后置
例如: 0010 --》 001- ,1200--》12--, 0000--》----
在线等答复....

解决方案 »

  1.   

    试试看
    //前置 "^[0]+([^0]?)
    System.out.println("0010".replaceAll("^[0]+([^0]?)", "$1"));
    System.out.println("0000".replaceAll("^[0]+([^0]?)", "$1"));
    //后置 "([^0]?)[0]+$"
    System.out.println("0010".replaceAll("([^0]?)[0]+$", "$1"));
    System.out.println("1200".replaceAll("([^0]?)[0]+$", "$1"));
    System.out.println("0000".replaceAll("([^0]?)[0]+$", "$1"));
      

  2.   

    System.out.println("000123123000".replaceAll("(?:^0*)|(?:0*$)", ""));
      

  3.   

    前后0是否相等?String str = "00010234000";
    Pattern p = Pattern.compile("(^0*)(\\d*)(\\1)");
    Matcher m = p.matcher(str);
    while(m.find()){
    System.out.println(m.group(2)+(m.group(3)).replaceAll("0","-"));
    }