import java.util.regex.Pattern ;
import java.util.regex.Matcher ;
public class RegexDemo04{
public static void main(String args[]){
// 要求将里面的字符取出,也就是说按照数字拆分
String str = "A1B22C333D4444E55555F" ; // 指定好一个字符串
String pat = "\\d+" ; // 指定好正则表达式
Pattern p = Pattern.compile(pat) ; // 实例化Pattern类
String s[] = p.split(str) ; // 执行拆分操作
for(int x=0;x<s.length;x++){
System.out.print(s[x] + "\t") ;
}
}
}
这里功能是按照数字拆分字符串,如果我这里要按照字母来拆分,则如何改程序呢?

解决方案 »

  1.   

    String pat = "[a-zA-Z]+" ; // 指定好正则表达式才是
      

  2.   

    String str = "A1B22C333D4444E55555F";
    String pat = "[0-9]{1,}"
    String[] strArray = str.split(pat);
    for(String s : strArray){
        System.out.println(s);
    }
      

  3.   

    写法还可以简化下:
    s = str.split("\\d+");
    for (int x = 0; x < s.length; x++) {
    System.out.print(s[x] + "\t");
    }
      

  4.   

    匹配特定数字: 
    ^[1-9]\d*$    //匹配正整数 
    ^-[1-9]\d*$   //匹配负整数 
    ^-?[1-9]\d*$   //匹配整数 
    ^[1-9]\d*|0$  //匹配非负整数(正整数 + 0) 
    ^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0) 
    ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数 
    ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数 
    ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数 
    ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点数(正浮点数 + 0) 
    ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮点数(负浮点数 + 0) 
    评注:处理大量数据时有用,具体应用时注意修正 匹配特定字符串: 
    ^[A-Za-z]+$  //匹配由26个英文字母组成的字符串 
    ^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串 
    ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串 
    ^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串 
    ^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串