捕获分组

image.png

代码演示:

  1. import java.util.regex.Matcher;
  2. import java.util.regex.Pattern;
  3. public class Main {
  4. public static void main(String[] args) {
  5. String a = "wty1234abcwty 12wty pi5678";
  6. //下面是非命名分组
  7. //说明:
  8. // 1. matcher.group(0)得到匹配的字符串
  9. // 2. matcher.group(1)得到匹配的字符串第一个分组的内容
  10. // 3. matcher.group(2)得到匹配的字符串第二个分组的内容
  11. // String str = "(\\d\\d)(\\d)(\\d)";//匹配四个数字的字符串
  12. //命名分组:即可以给分组取名
  13. String str = "(?<g1>\\d\\d)(?<g2>\\d\\d)";//匹配四个数字的字符串
  14. Pattern pattern = Pattern.compile(str);
  15. Matcher matcher = pattern.matcher(a);
  16. while(matcher.find()){
  17. System.out.println("找到:" + matcher.group(0));
  18. System.out.println("第一个分组的内容:" + matcher.group(1));
  19. System.out.println("第一个分组的内容[通过组名获取]:" + matcher.group("g1"));
  20. System.out.println("第二个分组的内容:" + matcher.group(2));
  21. System.out.println("第二个分组的内容[通过组名获取]:" + matcher.group("g2"));
  22. }
  23. }
  24. }

特别分组

image.png

代码演示:

  1. import java.util.regex.Matcher;
  2. import java.util.regex.Pattern;
  3. public class Main {
  4. public static void main(String[] args) {
  5. String a = "hellowty同学 nbwty哥哥 wty老大nb";
  6. //找到 wty同学 wty哥哥 wty老大 子字符串
  7. // String str = "wty同学|wty哥哥|wty老大";
  8. //改为费捕获分组,不能有matcher.group(1)操作
  9. // String str = "wty(?:同学|哥哥|老大)";
  10. //找到wty关键字,但是要求是查找wty同学 wty哥哥中包含的wty
  11. // String str = "wty(?=同学|哥哥)";
  12. //找到wty关键字,但是要求是查找不是 wty同学 wty哥哥中包含的wty
  13. String str = "wty(?!同学|哥哥)";
  14. Pattern pattern = Pattern.compile(str);
  15. Matcher matcher = pattern.matcher(a);
  16. while(matcher.find()){
  17. System.out.println("找到:" + matcher.group(0));
  18. }
  19. }
  20. }

贪婪匹配与非贪婪匹配

  1. import java.util.regex.Matcher;
  2. import java.util.regex.Pattern;
  3. public class Main {
  4. public static void main(String[] args) {
  5. String a = "hello11111 wty同学";
  6. // String str = "\\d+";//默认是贪婪匹配
  7. String str = "\\d+?";//非贪婪匹配
  8. Pattern pattern = Pattern.compile(str);
  9. Matcher matcher = pattern.matcher(a);
  10. while(matcher.find()){
  11. System.out.println("找到:" + matcher.group(0));
  12. }
  13. }
  14. }