java.util.regex 包主要包括以下三个类:
Pattern:
pattern对象是一个正则表达式的编译表示。Pattern类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
Matcher:
Matcher对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
PatternSyntaxException:
PatternSyntaxException 是一个运行时异常类,它表示一个正则表达式模式中的语法错误。
实例1,判断字符串是否满足正则表达式
package com.source.time;import java.util.regex.Pattern;public class Regex { public static void main(String[] args) { String content = "如果对你有帮助,关注源码时刻,并转发文章"; //以'如果'开头,以'文章结尾', 中间任意数量任意字符 String regex = "^如果.*文章$"; boolean isMatch = Pattern.matches(regex, content); System.out.println("字符串是否满足:以'如果'开头,以'文章结尾', 中间任意数量任意字符" + isMatch); }}
结果
字符串是否满足:以'如果'开头,以'文章结尾', 中间任意数量任意字符true
实例2,判断字符串是否包含正则表达式表示的字符串
package com.source.time;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Regex { public static void main(String[] args) { // 按指定模式在字符串查找 String line = "字符串包含了一位数字吗?1"; // String regex = "\\d"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(line); System.out.println("是否包含一位数字?" + matcher.find()); }}
结果
是否包含一位数字?true
实例1、2的区别在于:1的正则表达式必须表达出整串字符串;而2的正则表达式只需要表达出字符串的子串。
开始实例3之前,先来介绍一个概念,捕获组
使用括号,可以把多个字符组成一个组。捕获组是从左到右来编号的,编号从0开始。
比如表达式(A)(B(C)))
第0组:ABC (第0组是整个正则表达式匹配)
第1组:A
第2组:BC
第3组:C
实例3
package com.source.time;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Regex { public static void main(String[] args) { // 按指定模式在字符串查找 String line = "字符串aaabbb123"; // String regex = "(a{3})(b+(\\d+))"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(line); if (matcher.find()) { int groupCount = matcher.groupCount(); for (int groupIndex = 0; groupIndex <= groupCount; groupIndex++) { String format = "分组%d:%s"; System.out.println(String.format(format, groupIndex, matcher.group(groupIndex))); } } }}
结果
分组0:aaabbb123
分组1:aaa
分组2:bbb123
分组3:123
如果对你有帮助,请关注和转发!![]()
![]()
