当前位置: 首页 > 图灵资讯 > 技术篇> 正则表达式语法

正则表达式语法

来源:图灵教育
时间:2023-05-29 13:52:57

1.正则表达式语法连接2.元字符-字符匹配符883

正则表达式语法_bc

正则表达式语法_java_02

2.1应用案例884-855代码com.stulzl.regexp03regexp0

package com.stulzl.regexp03;import java.util.regex.Matcher;import java.util.regex.Pattern;///演示元字符-字符匹配符匹配符  84-885 class RegExp03 {    public static void main(String[] args) {        String content = a11c8abc _ABC y@";        //String regStr = "[a-z]";///匹配a-z之间的任何字符        //String regStr = "[A-Z]";///匹配A-Z之间的任何字符        //String regStr = "abc";///匹配abc字符串(默认区分大小写)        //说明(/说明(i)不区分大小写的意思,a(?i)不区分大小写的意思,a(?i)bc代表bc不区分大小写,a((?i)b)c表示b不区分大小写作        //String regStr = "(?i)abc";///匹配abc字符串(不区分大小写)        //String regStr = "[0-9]";///匹配0-9之间的任何字符        //补充说明:如果后面带{} 例如[^a-z]{2},任何两个连续字符不在a-z之间匹配        //String regStr = "[^a-z]";///匹配任何不在a-z之间的字符        //补充说明:如果后面带{} 例如[0-9]{2},任何两个连续字符不在0-9之间匹配        //String regStr = "[^0-9]";///任何不在0-9之间匹配的字符        //String regStr = "[abcd]";////在abcd之间匹配任何字符        //String regStr = "[^abcd]";///匹配任何不在abcd之间的字符        //String regStr = "\\D";///任何不在0-9之间匹配的字符() 即非数字        //String regStr = "\\w";//匹配 大小写英文字母, 数字,下划线        //String regStr = "\\W";//匹配 等价于 [^a-zA-Z0-9_]        //String regStr = "\\s";//  \\s 匹配任何空白字符(空格,制表符等)        //String regStr = "\\S";//\\S 匹配任何非空白字符 ,和\\s 刚好相反        String regStr = ".";// . 匹配出 \n 所有以外的字符,如果需要匹配,则需要使用本身 \\.                Pattern pattern = Pattern.compile(regStr);        ///解释当创建Pattern对象时,指定Pattern.CASE_INSENSITIVE,表示字母大小写字母不区分        //Pattern pattern = Pattern.compile(regStr,Pattern.CASE_INSENSITIVE);        Matcher matcher = pattern.matcher(content);        while(matcher.find()){            System.out.println(”发现:""+matcher.group(0));        }    }}

3.元字符-选择匹配符8866

在匹配一个字符串时,它是有选择性的,也就是说,你可以匹配这个和那个。此时,您需要选择匹配符号I

正则表达式语法_java_03

com中的代码.stulzl.regexp04regexp04

package com.stulzl.regexp04;import java.util.regex.Matcher;import java.util.regex.Pattern;///选择匹配符   886public class Regexp04 {    public static void main(String[] args) {        //即:可以匹配这个,也可以匹配那个,此时,您需要使用匹配符号的选择 |        String content = "hanshunping 韩 寒冷";        String regStr = "han|韩|寒";        Pattern pattern = Pattern.compile(regStr);        Matcher matcher = pattern.matcher(content);        while(matcher.find()){            System.out.println(”发现:""+matcher.group(0));        }    }}

4.元字符-限定符887

指定前面的字符和组合项连续出现多少次?

正则表达式语法_字符串_04

comm4.1应用案例代码.stulzl.regexp05regexp

package com.stulzl.regexp05;import java.util.regex.Matcher;import java.util.regex.Pattern;///使用演示限定符  887public class Regexp05 {    public static void main(String[] args) {        String content = “a21111aaaaaaahelo”;        //a{3},1{4},\\d{2}        //String regStr = "a{3}";//表示匹配aaa        //String regStr = "1{4}";//表示匹配11111        //String regStr = "\\d{2}";///表示匹配两个任意数字符        //a{3,1{4,5},\\\},d{2,5}        //细节:java 默认贪婪匹配的匹配,即尽可能多的匹配        //String regStr = "a{3,4}"; //表示匹配 aaa 或者 aaaa        //String regStr = "1{4,5}"; //表示匹配 1111 或者 11111        //String regStr = "\\d{2,5}"; //匹配 2 位数或者 3,4,5位        //1+  (解释+ 简单讲 1-多)        //String regStr = "1+";//匹配一个 1 或者多个 1        //String regStr = "\\d+"; //匹配一个数字或多个数字        //1*  (解释* 简单讲 0-多)        //String regStr = "1*"; //匹配 0 个 1 或者多个 1        //演示?使用,遵守贪婪匹配  (解释? 简单讲 0或者1)        String regStr = "a1?";//匹配 a 或者 a1        Pattern pattern = Pattern.compile(regStr);        Matcher matcher = pattern.matcher(content);        while(matcher.find()){            System.out.println(”发现:""+matcher.group(0));        }    }}

5.元字符-888定位符定位符

定位符,规定要匹配的字符串的位置,如字符串的开始或结束,这也很有用,必须掌握

正则表达式语法_java_05

com中的代码.stulzl.regexp06regexp06

package com.stulzl.regexp06;import java.util.regex.Matcher;import java.util.regex.Pattern;///使用演示定位符   888public class Regexp06 {    public static void main(String[] args) {        //String content = "123-abc";        String content = "hanshunping sphan nnhan";        //以至少 1 数字开头,接管任何小写字母的字符串        //String regStr = "^[0-9]+[a-z]*";        //以至少 1 数字开头, 至少一个小写字母必须结束        //String regStr = "^[0-9]+[a-z]+$";        //以至少 1 数字开头, 至少一个小写字母必须结束,中间有一个 -        //String regStr = \\\\-[a-z]+$";        //表示匹配边界的han(这里的边界是指匹配字符串的结尾,也可以是空格子字符串的后面)        //String regStr = "han\\b";        String regStr = "han\\B";与\\b相反        Pattern pattern = Pattern.compile(regStr);        Matcher matcher = pattern.matcher(content);        while(matcher.find()){            System.out.println(”发现:""+matcher.group(0));        }    }}

6.8896.1常用的分组889

正则表达式语法_java_06

com中的代码.stulzl.regexp07regexp07

package com.stulzl.regexp07;import java.util.regex.Matcher;import java.util.regex.Pattern;//分组  889public class Regexp07 {    public static void main(String[] args) {        String content = "hanshunping s7789 nn189han";        //String regStr = "\\d\\d\\d\\d";///匹配四个数字的字符串        ///以下是非命名分组        //说明        // 1. matcher.group(0) 得到匹配的字符串        // 2. matcher.group(1) 得到匹配的字符串的第 1 个分组内容        // 3. matcher.group(2) 得到匹配的字符串的第 2 个分组内容        //String regStr = "(\\d\\d)(\\d\\d)";        ///命名分组,即可给分组取名        String regStr = "(?\\d\\d)(?\\d\\d)";        Pattern pattern = Pattern.compile(regStr);        Matcher matcher = pattern.matcher(content);        while(matcher.find()){            System.out.println(”发现:""+matcher.group(0));            System.out.println("第 1 个组内容=” + matcher.group(1));            System.out.println("第 1 分组内容[通过组名]= + matcher.group(g1);            System.out.println("第 2 个组内容=” + matcher.group(2));            System.out.println("第 2 分组内容[通过组名]= + matcher.group(g2);        }    }}

6.2特别分组890

正则表达式语法_正则表达式_07

com中的代码.stulzl.regexp08regexp08

package com.stulzl.regexp08;import java.util.regex.Matcher;import java.util.regex.Pattern;//演示非捕获分组  890public class Regexp08 {    public static void main(String[] args) {        String content = "hello 韩顺平教育 jack 韩顺平老师 韩顺平同学 hello 韩顺平学生”“韩顺平学生”;        // 找到 韩顺平教育 、韩顺平老师,韩顺平同学 子字符串        //String regStr = “韩顺平教育|韩顺平老师|韩顺平同学”;        //上面的写法可以等同于非捕获分组, 注意:不能 matcher.group(1)        //String regStr = 韩顺平():教育|教师|同学”;        //找到 韩顺平 这个关键词,但要求只是找韩顺平教育和 韩顺平老师 其中包含的韩顺平        ///下面也是非捕获分组,不能使用 matcher.group(1)        //String regStr = 韩顺平()=教育|教师)";        //找到 韩顺平 这个关键词,但要求只是搜索 不是 (韩顺平教育 和 韩顺平老师) 其中包含的韩顺平        ///下面也是非捕获分组,不能使用 matcher.group(1)        String regStr = 韩顺平()=教育|教师)";        //找到 韩顺平 这个关键词,但要求只是搜索 不是 (韩顺平教育 和 韩顺平老师) 其中包含的韩顺平        ///下面也是非捕获分组,不能使用 matcher.group(1)        String regStr = 韩顺平(!教育|教师)";        Pattern pattern = Pattern.compile(regStr);        Matcher matcher = pattern.matcher(content);        while(matcher.find()){            System.out.println(”发现:""+matcher.group(0));        }    }}

7.非贪匹配891

添加到限定符后面?

com中的代码.stulzl.regexp09Regexp09

package com.stulzl.regexp09;import java.util.regex.Matcher;import java.util.regex.Pattern;//演示非贪婪匹配  891public class Regexp09 {    public static void main(String[] args) {        String content = hello111111 ok";        //String regStr = "\\d+";///默认贪婪匹配        String regStr = "\\d+?";//非贪婪匹配        Pattern pattern = Pattern.compile(regStr);        Matcher matcher = pattern.matcher(content);        while(matcher.find()){            System.out.println(”发现:""+matcher.group(0));        }    }}