使用正则表达式需要引入 java.util.regex 包,我们就从这里入手讲解:
java.util.regex 包主要包括以下三个类:
Pattern 类:
Pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
Matcher 类
Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
PatternSyntaxException:
PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。
1. 正则表达式的使用:
/* import java.util.regex.*; */public void RegexExample() {String input = "I am Jimmy from mp.csdn.net";String regex = ".*csdn.*";// 方式1:String 的 matches 方法boolean flag1 = input.matches(regex);// 方式2:Pattern 对象的 matches 方法boolean flag2 = Pattern.matches(regex, input);// 方式3: Matcher 对象的 matches 方法Pattern p = Pattern.compile(regex);Matcher m = p.matcher(input);boolean flag3 = m.matches();System.out.println("字符串中是否包含了'csdn'子字符串? " + flag1 );System.out.println("字符串中是否包含了'csdn'子字符串? " + flag2 );System.out.println("字符串中是否包含了'csdn'子字符串? " + flag3 );}
输出结果:
- 字符串中是否包含了’csdn’子字符串? true
- 字符串中是否包含了’csdn’子字符串? true
- 字符串中是否包含了’csdn’子字符串? true
从上面的代码中,你会看到一个现象:
- 3种方式的底层实现其实是一样的,只是封装的成度不一样,实际也确实如此;
- 明白方式3,更有助于理解正则的执行过程;
2. 正则表达式语法
在其他语言中,\ 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。
在 Java 中,\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。
