如何用正则表达式实现以下功能
例如 通过一个正则表达式“2013年7月”和“2013年7月”
提取出“2013/07/01”?
也就是不管数字是全角的还是半角的 都按照半角的数字提取出来,按照“XXXX/XX/XX”格式提取出来。
本人对正则表达式不太理解,希望高手帮忙解决!
回帖即给分
正则表达式

解决方案 »

  1.   

    网上搜的全角转半角
    public static final String QJToBJChange(String QJStr)    //java下实现
     {   //11:36 2010-5-2
      //全角转半角的经典函数,绝对正确,之前一直想正则表达式,人都累死了。
         char[] chr = QJStr.toCharArray();   
         String str = "";   
         for (int i = 0; i < chr.length; i++)   
         {   
             if((int) chr[i]<65248)
             {
              chr[i]=chr[i];
             }
             else
          chr[i] = (char) ((int) chr[i] - 65248);  
             
             
             str += chr[i];   
         }   
         return str;   
     }
    然后
    String str2 = "2013年7月";
    String regex = "(\\d{4})年(\\d{1,2})月";
    Matcher m = Pattern.compile(regex).matcher(QJToBJChange(str2));
    while(m.find()){
    System.out.println(m.group(1)+"/"+m.group(2));
    }
      

  2.   

    更简单的方法是
    str.replaceAll("年|月|日","/")
    而不是用正则表达式去分别匹配