Java正则表达式:初学者完整指南
正则表达式(regex)是一种根据模式搜索、提取和替换文本的强大工具。在Java中,正则表达式的处理通过java.util.regex包实现。本文将讲解Java正则表达式的基础知识,学习如何使用Pattern和Matcher类,并介绍实际示例。
1. Java中处理正则表达式的主要类
在Java中,处理正则表达式主要使用两个类:
- Pattern — 表示编译后的正则表达式。
- Matcher — 执行文本的搜索和匹配操作。
此外,还有一个便捷方法String.matches(),可以快速检查字符串是否匹配模式,但灵活性较低。
示例1:简单匹配
import java.util.regex.*;
public class RegexExample1 { public static void main(String[] args) { String text = "你好,世界!Java是最好的语言。"; String pattern = "Java";
Pattern p = Pattern.compile(pattern); Matcher m = p.matcher(text);
if (m.find()) { System.out.println("找到单词:" + m.group()); } else { System.out.println("没有匹配"); } }}输出:找到单词:Java
2. 元字符和字符类
正则表达式使用特殊字符(元字符)来描述模式:
.— 任意字符(除换行符外)\\d— 数字 [0-9]\\D— 非数字\\w— 字母、数字或下划线 [a-zA-Z0-9_]\\W— 非单词字符\\s— 空白字符\\S— 非空白字符[abc]— a、b或c中的任意一个字符[^abc]— 除a、b、c外的任意字符
示例2:在文本中查找数字
import java.util.regex.*;
public class RegexExample2 { public static void main(String[] args) { String text = "我的号码:123-456-7890"; String pattern = "\\\\d+"; // 一个或多个数字
Pattern p = Pattern.compile(pattern); Matcher m = p.matcher(text);
while (m.find()) { System.out.println("找到数字:" + m.group()); } }}输出:
找到数字:123找到数字:456找到数字:78903. 量词和边界
量词指定模式元素重复的次数:
*— 0次或多次+— 1次或多次?— 0次或1次{n}— 恰好n次{n,}— n次或更多{n,m}— 从n到m次
边界有助于指定模式的位置:
^— 字符串开头$— 字符串结尾\\b— 单词边界
示例3:验证电子邮件地址
import java.util.regex.*;
public class RegexExample3 { public static void main(String[] args) { String email = "user@example.com"; String pattern = "^[\\\\w.-]+@[\\\\w.-]+\\\\.\\\\w{2,}$";
boolean isValid = Pattern.matches(pattern, email); System.out.println("电子邮件有效:" + isValid); }}输出:电子邮件有效:true
4. 捕获组和文本替换
捕获组允许提取部