日期:2014-05-18  浏览次数:20601 次

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

------解决方案--------------------
网上搜的全角转半角
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));
}