Java 正则表达式详解

image
image
image
image
image

总结:

  1. 搜索(匹配):在一个字符串中搜索出一个或多个与正则表达式相匹配的子字符串。搜索又分为匹配和子字符串搜索。匹配是对用户所提供的整个字符串进行判断,看其是否匹配正则表达式,比如电子邮件地址的匹配。子字符串搜索是“搜索”的普遍含义,指的是将与正则表达式相匹配的所有子字符串找出来,比如将一段英文文本中的所有单词给找出来。

  2. 替换(匹配并替换):将一个字符串中与正则表达式相匹配的子字符串找出来并替换成另一些子字符串,比如将一个字符串中的所有的cos替换成sin。
    image
    image
    image

    // 忽略ABC的大小写
    System.out.println("abC".matches("(?i)abc")); // true
    System.out.println("aBC".matches("(?i)abc")); // true
    System.out.println("AbC".matches("(?i)abc")); // true
    System.out.println("abC".matches("(?i)abc")); // true
    System.out.println("ABC".matches("(?i)abc")); // true
    System.out.println("abc".matches("(?i)abc")); // true
    System.out.println("abcd".matches("(?i)abc")); // false

捕获分组与非捕获分组

  • 正则默认是捕获分组
    image
String str = "我爱爱爱爱编编编编编编编程程程";
    // (.)\1* 获取单个单词,包括出现多次的情况
    List<String> list = ReUtil.findAll("(.)\\1*", str, 0);
    System.out.println(list); // [我, 爱爱爱爱, 编编编编编编编, 程程程]
    // 去重
    String s = str.replaceAll("(.)\\1*", "$1");
    System.out.println(s); // 我爱编程
posted @ 2023-02-25 17:46  his365  阅读(69)  评论(0编辑  收藏  举报