JAVA-正则表达式基本语法规则和Pattern,Matcher,PatternSyntaxException三大类

目录

引言

一,正则表达式基本语法规则

二,正则表达式的三大类方法

2.1,Pattern类

2.1.1,Pattern的常用方法matches()

2.2,Matcher类

2.2.1,Matcher的常用方法find()

[2.2.2,Matcher的常用方法group() ,返回匹配的结果内容](#2.2.2,Matcher的常用方法group() ,返回匹配的结果内容)

2.3,PatternSyntaxException类

三,反向引用

1,分组

2,捕获

3,反向引用


引言

  1. 正则表达式定义了字符串的模式。
  2. 正则表达式可以用来搜索、编辑或处理文本。
  3. 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别

一,正则表达式基本语法规则

|--------------------------|----------------------------------|----------------------|
| 字符 | 说明 | 实例 |
| ^ | 表达式开始 | |
| | 表达式结尾 | | | \[358a-z\] | 一个符号,符号范围在3,5,8,a-z | | | \[\^\] | 取反 | | | \\d === \[0-9\] | 代表1个数字,或多个数字 | \\\\d{9} | | \\d+ | 代表1个数字,或多个数字 | 当\[0-9\]{1,} | | \\D | \[\^0-9\] | | | \[\\u4e00-\\u9fa5\]{2,8} | 代表2到8个汉字字符 | | | \* | 代表0个或多个前边的符号 {0,} | \[a-z\]\* | | . | 代表1个任意的符号 | str.matches("\^.+") |
| + | 代表1个或多个前边的符号{1,} | \\d+ |
| ? | 代表0个或1个前边的符号 {0,1} | |
| {n} | n个 | |
| {m,n} | a-zA-Z_0-9{6,18} 和 \w{6,18} | |
| \w | a-zA-Z0-9_ | \\w |
| \W | \^a-zA-Z0-9_ | \\W |
| | | 匹配或正则表达式或,分组功能 | AD | CD :AD或者CD |
| () | 分组 | |
| \s | 代表空格 | \s |

java 复制代码
        //匹配a-z之间任意一个字符
        String Str = "[a-z]";
        //匹配A-Z之间任意一个字符
        String Str = "[A-Z]";
        //匹配abc字符串[默认区分大小写的]
        String Str = "abc";
        //匹配abc字符串[不区分大小写的]
        String Str = "(?i)abc";
        //匹配0-9之间任意一个字符
        String Str = "[0-9]";
        //匹配不在a-z之间任意一个字符
        String Str = "[^a-z]";
        //匹配不在0-9之间任意一个字符
        String Str = "[^0-9]";
        //匹配在abcd中任意一个字符
        String Str = "[abcd]";
        //匹配不在0-9的任意一个字符
        String Str = "\\D";
        //匹配 任意英文字母,数字,下划线
        String Str = "\\w";
        //匹配 等价于[^a-zA-Z0-9_]
        String Str = "\\W";
        //匹配 任何空白字符(空格,制表符(就是按下tab键的一个空格))
        String Str = "\\s";
        //匹配 任何非空白字符,和\\s刚好相反
        String Str = "\\S";
        //匹配除\n 之外的所有字符,如果要匹配.本身则需要使用\\.
        String Str = "."; 

二,正则表达式的三大类方法

2.1,Pattern类

Pattern编译正则表达式后创建一个匹配模式:

Pattern 类:pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达 式作为它的第一个参数。

2.1.1,Pattern的常用方法matches()

matches()用于整体匹配,用来验证输入的字符串是否满足条件。

示例代码:

java 复制代码
public static void main(String[] args) {
        //演示matches方法,用于整体匹配,用来验证输入的字符串是否满足条件使用
        String content = "hello abc hello,Java开发";
        //String Str = "hello"; //false
        String Str = "hello.*";
        boolean matchers = Pattern.matches(Str, content);
        System.out.println("整体匹配:" + matchers);
    }

输出结果:

2.2,Matcher类

Matcher使用Pattern实例提供的正则表达式对目标字符串进行匹配,是真正影响搜索的对象:

Matcher 类:Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。

2.2.1,Matcher的常用方法find()

find() 方法,如果有匹配结果,则返回true。

示例代码:

java 复制代码
        String name="小明123";
        Pattern pa=Pattern.compile("[\u4e00-\u9fa5]+");
        Matcher ma=pa.matcher(name);
        System.out.println(ma.find());

输出结果:

2.2.2,Matcher的常用方法group() ,返回匹配的结果内容

group() ,返回匹配的结果内容。

示例代码:

java 复制代码
        String name="小明123";
        Pattern pa=Pattern.compile("[\u4e00-\u9fa5]+");
        Matcher ma=pa.matcher(name);
        while (ma.find()){
        String n=ma.group();
            System.out.println(n);
        }

输出结果:

2.3,PatternSyntaxException类

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

三,反向引用

1,分组

():可以看作是一个用括号组成的一个比较复杂的匹配模式,一个圆括号的部分我们可以看作是一个分组(表达式)

2,捕获

把正则表达式中的分组(表达式)的内容,保存到内存中以数字编号或显式命名的组里,方便后边引用,从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2。以此类推,组0代表的是整个表达式

3,反向引用

()里的内容被捕获后,可以在这个()后被使用,从而写出一个比较使用的匹配模式,这个被我们称为反向引用,这种引用既可以在正则表达式内部,也可以是在正则表达式外部,内部反向引用\\分组号,外部反向引用$分组号

示例代码:

java 复制代码
        String content = "hello jack14 tom11111 j12321-333999111ack2232 yyy xxx2552";
        //找到两个相同的数字
        //String Str = "(\\d)\\1";
        //匹配五个相同的数字
        //String Str = "(\\d)\\1{4}";
        //匹配个位与千位相同,十位与百位相同的数,5225,1551
        String Str = "(\\d)(\\d)\\2\\1";

        /**
         * 在字符串中检索出,形式如:12321-333999111 这样的号码
         * 要求满足前面是一个五位数,然后一个-,然后是一个九位数,连续的每三位要相同
         */
        //String Str = "\\d{5}-(\\d)\\1{2}(\\d)\\2{2}(\\d)\\3{2}";
        Pattern pattern = Pattern.compile(Str);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println(matcher.group(0));
        }
相关推荐
营养充电站7 小时前
C++23 新特性在 CLion 中的实战体验
macos·docker·jupyter·正则表达式
吴声子夜歌18 小时前
正则表达式——字符组
正则表达式
天若有情67321 小时前
自制浏览器端文本批量处理小工具,支持查找替换、内容删除、正则表达式,开箱即用
正则表达式
吴声子夜歌1 天前
正则表达式——简单的模式匹配
正则表达式
吴声子夜歌1 天前
正则表达式——前后查找
正则表达式
吴声子夜歌1 天前
正则表达式参考
正则表达式
吴声子夜歌2 天前
正则表达式——常见应用软件和编程语言中的正则表达式
正则表达式
吴声子夜歌2 天前
正则表达式——使用子表达式
正则表达式
吴声子夜歌3 天前
正则表达式——重复匹配
正则表达式
吴声子夜歌3 天前
正则表达式——匹配单个字符
正则表达式