java 正则匹配输出匹配内容
正则表达式规则
查看我其他地方的详解:linux正则表达式
正则表达式与系统无关,与语言无关,都是统一规则
java使用
- 常规用法一
public static void main(String[] args) {
String reg = "[a-z]+[0-9]+";
Pattern p = Pattern.compile(reg);
String str = "abc001122a1@";
Matcher m =p.matcher(str);
while(m.find()){
System.out.println(m.groupCount());
System.out.println(m.group(0));
// System.out.println(m.group(1));
//System.out.println(m.group(2));
}
}
输出:
0
abc001122
0
a1
- 常规用法二
public static void main(String[] args) {
String reg = "[a-z]+[0-9]+";
Pattern p = Pattern.compile(reg);
String str = "abc001122";
Matcher m =p.matcher(str);
System.out.println(m.matches());
}
输出:
true
说明,需要str完全匹配正则,才会输出true,部分匹配依旧输出false
group用法
public static void main(String[] args) {
String reg = "([a-z]+)([0-9]+)";
Pattern p = Pattern.compile(reg);
String str = "abc001122a1@";
Matcher m =p.matcher(str);
while(m.find()){
System.out.println("=======\n"+m.group(0));
System.out.println(m.groupCount());
for(int i=1;i<=m.groupCount();i++){
System.out.println(m.group(i));
}
}
}
输出:
=======
abc001122
2
abc
001122
=======
a1
2
a
1
- 根据分组输出,发现在pattern中添加括号 () ,java会把它定义为一个group,我们就可以根据匹配到的目标结果,来依次将每个group匹配中的内容输出,