【发布时间】:2015-03-04 07:14:57
【问题描述】:
为什么 Pattern/Matcher 可以使用 (\\d+)([a-zA-Z]+) 而String.split() 不行?
例如:
String line = "1A2B";
Pattern p = Pattern.compile("(\\d+)([a-zA-Z]+)");
Matcher m = p.matcher(line);
System.out.println(m.groupCount());
while(m.find())
{
System.out.println(m.group());
}
打印:
2
1A
2B
但是:
String line = "1A2B";
String [] arrayOfStrings = line.split("(\\d+)([a-zA-Z]+)");
System.out.println(arrayOfStrings.length);
for(String elem: arrayOfStrings){
System.out.println(elem);
}
仅打印:
0
【问题讨论】:
-
split的正则表达式是一个分隔符,而在 matcher 的情况下它是一个“模式”,用于匹配您选择的表达式... -
你想根据什么来分割?
-
只是分成(数字+字母)的组。但是为什么我不能使用与 String.split() 相同的正则表达式?