一、分组
package com.jun.regexp;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 分组
*/
public class RegExp07 {
public static void main(String[] args) {
String content ="zhengyabo a5566 nn7766zhen";
/*非命名分组
matcher.group(0)得到匹配到的字符串
matcher.group(1)得到匹配到的字符串的第一个分组内容
matcher.group(2)得到匹配到的字符串的第二个分组内容
*/
//String regStr ="(\\d\\d)(\\d\\d)";
//命名分组
String regStr ="(?<a1>\\d\\d)(?<a2>\\d\\d)";
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()){
System.out.println("找到:"+matcher.group(0));
System.out.println("第一个分组内容:"+matcher.group(1));
System.out.println("第一个分组内容(组名):"+matcher.group("a1"));
System.out.println("第二个分组内容:"+matcher.group(2));
System.out.println("第二个分组内容(组名):"+matcher.group("a2"));
}
}
}
二、特别分组
package com.jun.regexp;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 非捕获分组
*/
public class RegExp08 {
public static void main(String[] args) {
String content = "hello老黄牛精神 yes老黄牛手速 老黄牛你好hello";
//String regStr = "老黄牛精神|老黄牛手速|老黄牛你好";
//非捕获分组等价于上面 不能matcher.group(1)
//String regStr = "老黄牛(?:精神|手速|你好)";
//只找老黄牛关键字
//String regStr = "老黄牛(?=精神|手速|你好)";
//只找老黄牛关键字,但是取反
String regStr = "老黄牛(?!手速|你好)";
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("找到:" + matcher.group(0));
}
}
}