正则问题 m.groupCount() 和 m.find()
本帖最后由 lpy3654321 于 2012-03-18 02:00:56 编辑
import java.util.regex.*;
public class Sda {
public static void main(String[] args){
String str = "15812345138s15812345678";
Pattern p = Pattern.compile("[1][3,5]+\\d{9}");
Matcher m = p.matcher(str);
if(m.find()){
int count = m.groupCount(); //问题一:此方法为什么回返的是0,而不是1。这是为什么啊??
//下面的for循环只能输入一个手机号,而我想输出两个。。。
for(int i = 0; i <= count; i++)
System.out.println("group " + i + " :" + m.group(i));
}
System.out.println("=======================");
//问题二: 这个while循环能输入第二个,但是第一个确不能输入。 如果单独使用就可以输出两个手机号码。这又是为什么??
while(m.find()){
System.out.println(m.group());
}
}
}
String str = "15812345131s15812345672a15812345133s15812345674a15812345135s15812345676a";
Pattern p = Pattern.compile("1[358]\\d{9}");
Matcher m = p.matcher(str);
while(m.find()){
System.out.println(m.group());
m.find();
}
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest {
public static void main(String[] args) {
String str = "15812345131s15812345672a15812345133s15812345674a" +
"15812345135s15812345676as13312345644";
String regex = "(1[3458][0-9]{9}).*(1[3458][0-9]{9}).*" +
"(1[3458][0-9]{9}).*(1[3458][0-9]{9}).*" +
"(1[3458][0-9]{9}).*(1[3458][0-9]{9}).*" +
"(1[3458][0-9]{9}).*";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
System.out.println("groupCount: " + matcher.groupCount());
int count = matcher.groupCount();
while (matcher.find()) {
for (int i = 1; i <= count; i++) {
if (matcher.start(i) > -1) {
System.out.println("group " + i + ": " + matcher.group(i));
}
}
}
}
}
String str = "15812345131s15812345672a15812345133s15812345674a15812345135s15812345676a";
Pattern p = Pattern.compile("1[358]\\d{9}");
Matcher m = p.matcher(str);
while(m.find()){
System.out.println(m.group());
m.find();
}
/*-----输出-----
15812345131
15812345133
15812345135
*/