Java--正则表达式--语法介绍
- 基本介绍:
-
元字符:
-
package com.model.regexp; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/8/19 15:05 * 演示正则表达式语法 */ public class RegExpDemo02 { public static void main(String[] args) { // \\ :转义号的使用 // .:匹配任意的一个字符 // \\.:表示匹配 . 字符 String context="abc$(abc(123("; String regExp="\\("; Pattern pattern = Pattern.compile(regExp); Matcher matcher = pattern.matcher(context); while (matcher.find()){ System.out.println(matcher.group(0)); } } }
- 字符匹配符:
- 字符匹配使用案例:
-
选择匹配符:
-
定位符:
-
package com.model.regexp; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/8/19 15:42 * 演示字符匹配符的使用 */ public class RegExpDemo03 { public static void main(String[] args) { String context="abc12s3456@#$dea fa"; // 1.匹配字符 // String regExp="[a-z]{1,3}"; // String regExp="[^a-z]{1,3}"; // \\d: 1到3个 数字 // String regExp="\\d{1,3}"; // \\w: 1到3个 数字或字母,下划线 // String regExp="\\w{1,3}"; // \\W: 非数字字母,下划线 // String regExp="\\W{1,3}"; // \\D:非数字 // String regExp="\\D{1,3}"; // // String regExp="\\d?"; // String regExp="\\d+"; // String regExp="\\d*"; // 不区分大小写 : (?i) // String regExp="(?i)[a-z]"; // \\s:空白字符 // String regExp="\\s"; // . :任意一个字符,\n 除外 // String regExp="."; // 2。选择字符 // |:或,一次匹配多个 // String regExp="a|b|c"; // 3.定位字符: // ^ :以xx开头 ^[a-z] 以任意一个或多个字母开头 // $: 以xx位结尾 [a-z]+$:以任意一个或多个字母结尾 // String regExp="^[a-z]+.*[a-z]+$"; // a\\b : 匹配边界的a字符 {边界:被匹配的字符串的最后,也可以式空格的子字符串后面 } // String regExp="a\\b"; // a\\B:匹配非边界的a字符 String regExp="a\\B"; Pattern pattern = Pattern.compile(regExp); // 不区分大小写 // Pattern pattern = Pattern.compile(regExp,Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(context); while (matcher.find()){ System.out.println(matcher.group(0)); } } }
-
分组:
-
package com.model.regexp; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/8/19 18:24 * 演示正则表达式 :分组的使用 */ public class RegExpDemo04 { public static void main(String[] args) { String context="abc123def@#a"; // () ;分组 (\\w+)(\\d+)(.*)(\\w$),第一个括号是一组,第二个括号是二组,第三个括号是三组 // (?<> \\w+): 对分组进行取名,按照名字进行取分组内容 String regExp="(?<one>\\w+)(\\d+)(.*)(\\w$)"; Pattern pattern = Pattern.compile(regExp); Matcher matcher = pattern.matcher(context); while (matcher.find()){ System.out.println(matcher.group(0)); System.out.println(matcher.group(1)); System.out.println(matcher.group(2)); System.out.println(matcher.group(3)); System.out.println(matcher.group(4)); System.out.println(matcher.group("one")); } } }
-
-
package com.model.regexp; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/8/19 18:24 * 演示正则表达式 :分组的使用 */ public class RegExpDemo04 { public static void main(String[] args) { String context="abc123def@#a张紫韩同学,张紫韩先生,张紫韩帅哥"; // () ;分组 (\\w+)(\\d+)(.*)(\\w$),第一个括号是一组,第二个括号是二组,第三个括号是三组 // (?<> \\w+): 对分组进行取名,按照名字进行取分组内容 // String regExp="(?<one>\\w+)(\\d+)(.*)(\\w$)"; // (?:xx|xx|xx) :非捕获分组 张紫韩同学|张紫韩先生|张紫韩帅哥 和 张紫韩(?:同学|先生|帅哥) 一样的效果 // String regExp="张紫韩同学|张紫韩先生|张紫韩帅哥"; // String regExp="张紫韩(?:同学|先生|帅哥)"; // == 张紫韩同学|张紫韩先生|张紫韩帅哥 // (?=xx|xx|xx)找到 张紫韩 这个关键字,但是要求是只是查找 张紫韩同学 和 张紫韩先生 中包含的张紫韩 // String regExp="张紫韩(?=同学|先生)"; // (?!xx|xx):取反,不会取张紫韩同学和张紫韩先生的 张紫韩,匹配其他的张张紫韩 String regExp="张紫韩(?!同学|先生)"; Pattern pattern = Pattern.compile(regExp); Matcher matcher = pattern.matcher(context); while (matcher.find()){ System.out.println(matcher.group(0)); // System.out.println(matcher.group(1)); // System.out.println(matcher.group(2)); // System.out.println(matcher.group(3)); // System.out.println(matcher.group(4)); // System.out.println(matcher.group("one")); } } }
-