Java JDK正则表达式完全指南

需积分: 3 13 下载量 162 浏览量 更新于2024-09-16 1 收藏 53KB DOC 举报
"Java JDK正则表达" 在Java中,正则表达式是一种强大的文本处理工具,用于模式匹配、查找、替换和分割字符串。Java JDK提供了java.util.regex包,该包包含处理正则表达式的核心类,如Pattern和Matcher。 1. **Pattern类**: Pattern类是用于编译和存储正则表达式的。编译后的模式可以多次重复使用,提高性能。创建Pattern对象需要通过`Pattern.compile(String regex)`方法,其中regex参数是符合正则语法的字符串。例如: ```java Pattern p = Pattern.compile("f(.+?)k"); ``` 编译后的Pattern对象可以用来创建Matcher实例。 2. **Matcher类**: Matcher类是实际执行匹配操作的,它从给定的输入字符串中寻找与Pattern匹配的部分。创建Matcher对象需要通过Pattern对象的`matcher(CharSequence input)`方法。Matcher提供了多个方法,如`find()`、`matches()`、`group()`等。例如: ```java Matcher m = p.matcher("fckfkkfkf"); while (m.find()) { System.out.println(m.group() + "||" + m.group(1)); } ``` `find()`方法查找下一个匹配项,`group()`方法返回整个匹配的子串,`group(int group)`返回指定组号的子串。 3. **正则表达式语法**: 在示例中,`f(.+?)k`匹配以"f"开头,接着是任意数量的字符(但尽可能少),然后是"k"的字符串。`(.+?)`是非贪婪版本的量词,它会尽可能少地匹配字符。 同理,`f(.+?)i(.+?)h`匹配以"f"开头,接着是任意数量的字符,然后是"i",再接着是任意数量的字符,最后是"h"的字符串。 4. **日期格式匹配**: 示例中的`"(19|20)\d\d([-/.])(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01])"`是一个用于匹配常见日期格式的正则表达式,例如:"2022/05/30"或"1999-12-31"。它由年份、月份和日期组成,并允许使用"/"、"."或"-"作为分隔符。 5. **其他方法**: - `Matcher.reset()`:重置Matcher对象,使其重新从输入字符串的开始位置开始匹配。 - `Matcher.replaceFirst(String replacement)`和`Matcher.replaceAll(String replacement)`:分别用于替换第一次匹配到的子串和所有匹配到的子串。 6. **正则表达式预定义字符类**: - `\d`:匹配任何数字(等同于[0-9])。 - `\D`:匹配任何非数字字符(等同于[^0-9])。 - `\w`:匹配任何字母数字字符(等同于[a-zA-Z0-9_])。 - `\W`:匹配任何非字母数字字符(等同于[^a-zA-Z0-9_])。 - `\s`:匹配任何空白字符,包括空格、制表符、换页符等(等同于[\t\n\x0B\f\r])。 - `\S`:匹配任何非空白字符(等同于[^ \t\n\x0B\f\r])。 Java正则表达式是一个强大且灵活的工具,可以处理复杂的文本匹配需求。通过熟练掌握Pattern和Matcher类的使用,以及理解正则表达式的基本语法和特殊字符,开发者能够有效地处理字符串操作。