正则表达式是处理字符串的强大工具。在 Java 中,它们定义了字符串模式,可用于搜索、编辑或处理文本。本文将探讨 Java 正则表达式的基本原理、语法和一些常用的正则表达式。
一、Java 正则表达式核心
- Pattern 类:正则表达式的编译表示。通过调用其公共静态编译方法来创建 Pattern 对象。
- Matcher 类:用于对输入字符串进行解释和匹配操作的引擎。通过 Pattern 对象获取 Matcher 对象。
- PatternSyntaxException:表示正则表达式模式中的语法错误。
- 元字符:如
|
(或),.
(任意字符),^
(开始),$
(结束),\d
(数字),\s
(空白字符),\b
(单词边界),\uxxxx
(Unicode 字符)。 - 量词:如
n+
(至少一个n),n*
(零个或多个n),n?
(零个或一个n),n{x}
(x个n),n{x,y}
(x到y个n),n{x,}
(至少x个n)。
二、基本语法
- ****:标记特殊字符,如
\n
(换行符)。 - ^:匹配输入字符串的开始位置。
- $:匹配输入字符串的结束位置。
- *:零次或多次匹配前面的字符或子表达式。
- +:一次或多次匹配前面的字符或子表达式。
- ?:零次或一次匹配前面的字符或子表达式。
- {n}:匹配前面字符恰好 n 次。
- {n,}:匹配前面字符至少 n 次。
- {n,m}:匹配前面字符至少 n 次,但不超过 m 次。
- .:匹配除换行符之外的任何单个字符。
- (pattern):匹配 pattern 并捕获匹配的子表达式。
- (?:pattern):匹配 pattern 但不捕获匹配的子表达式。
- (?=pattern):正向预测先行搜索的子表达式。
- x|y:匹配 x 或 y。
- [xyz]:字符集,匹配所包含的任一字符。
- [^xyz]:反向字符集,匹配未包含的任何字符。
- [a-z]:匹配指定范围内的任何字符。
- \b 和 \B:分别匹配字边界和非字边界。
- \d 和 \D:分别匹配数字和非数字字符。
- \s 和 \S:分别匹配空白和非空白字符。
- \w 和 \W:分别匹配单词字符和非单词
三、常用正则表达式
- 校验数字:
- 校验字符:
- 特殊格式:
四、使用示例
String content = "I am noob from runoob.com.";
String pattern = ".*runoob.*";
boolean isMatch = Pattern.matches(pattern, content);
System.out.println("字符串中是否包含了 'runoob' 子字符串? " + isMatch);