java 正则表达式--Java笔记

 

目录

正则表达式

一.语法

1.转义符

2.限定符

3.选择匹配符

4.分组组合和反向引用

5.特殊字符

6.定位符

二.常用类

1.Pattern

2.Matcher

3.PatternSyntaxException

三.String


正则表达式

一.语法

非贪心需要在后面加?

整体匹配,匹配内容为整个字符串

非整体匹配,匹配内容为部分字符串

        String c = "12";
        // 贪婪匹配
        String i = "\\d+";
        Pattern p = Pattern.compile(i);
        Matcher m = p.matcher(c);
        while (m.find()) {
            System.out.println(m.group(0));
        }

        // 非贪婪匹配
        i = "\\d+?";
        p = Pattern.compile(i);
        m = p.matcher(c);
        while (m.find()) {
            System.out.println(m.group(0));
        }

输出:

 

1.转义符

\\   用于某些特殊字符,否则会报错( . * + ( ) $ \ / ? [ ] ^ { } )

2.限定符

 

 

3.选择匹配符

 

4.分组组合和反向引用

 

①.分组:可以把一个小括号看作一个分组

②.捕获:以小括号为标签,从左到右第一个为1,第二个为2,0为整个正则表达式获取的内容,

③.反向引用:小括号被捕获后,可以使用,内部反向引用用 \\ 分组号,外部反向引用用 $分组号

        String c = "1221,5225,6666";
        String i = "(\\d)(\\d)\\2\\1";// 分组,内部反向引用

        Pattern p = Pattern.compile(i);
        Matcher m = p.matcher(c);

        while (m.find()) {
            System.out.print(m.group(1));
            System.out.print("  " + m.group(2) + "  ");
            System.out.println(m.group(0));
        }
        System.out.println(m.replaceAll("$1"));// 外部反向引用

输出: 

 

5.特殊字符

/s 空白字符
/S 非空白字符
[a-z] // 匹配所有的小写字母 
[A-Z] // 匹配所有的大写字母 
[a-zA-Z] // 匹配所有的字母 
[0-9] // 匹配所有的数字 

 

6.定位符

 

二.常用类

1.Pattern

Pettern对象是一个 正则表达式对象,没有公共的方法

        String c = "222.22.22.22";
        String i = "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}";

        Pattern p = Pattern.compile(i);
        Matcher m = p.matcher(c);

        while (m.find()) {// find() 不是整体匹配,能匹配到就有
            System.out.print(m.group(0));
        }
        System.out.println();
        
        System.out.println(p.pattern());
        System.out.println(p.quote("   "));
        System.out.println(p.matcher(i));

输出:

 

2.Matcher

Matcher 对象是对输入字符串进行 解释和匹配的引擎

 

3.PatternSyntaxException

是一个非强制异常类,表示正则表达式语法错误

 

 

三.String

 

        String c = "a12,a45,a78,aa";
        // replaceAll()替换 (?=)是这个后缀的
        System.out.println(c.replaceAll("a(?=12|45)", "b"));
        // (?!)不是这个后缀的
        System.out.println(c.replaceAll("a(?!12|45)", "b"));
        // 分割字符串
        String[] i = c.split(",");
        for (String string : i) {
            System.out.println(string);
        }
        c = "100";
        // 整体匹配,即匹配内容为整个字符串才返回 true
        System.out.println(c.matches("\\d+"));

输出:

 b12,b45,a78,aa


a12,a45,b78,bb


a12
a45
a78
aa


true

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值