Java 正则表达式
正则表达式(Regular Expression)是一种用于处理字符串的强大工具,它允许开发者执行复杂的字符串匹配和替换操作。在 Java 中,java.util.regex
包提供了正则表达式的支持,包括两个主要类:Pattern
和 Matcher
。
1. 正则表达式基础
正则表达式由普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”)组成。元字符包括 .
、*
、+
、?
、^
、$
、()
、[]
等,它们赋予正则表达式强大的匹配能力。
1.1. 普通字符
普通字符包括所有非元字符,它们在正则表达式中匹配自身。例如,正则表达式 java
匹配字符串中的 "java"。
1.2. 元字符
.
:匹配除换行符以外的任意字符。*
:匹配前面的子表达式零次或多次。+
:匹配前面的子表达式一次或多次。?
:匹配前面的子表达式零次或一次。^
:匹配输入字符串的开始位置。$
:匹配输入字符串的结束位置。()
:标记一个子表达式的开始和结束位置。[]
:标记一个中括号表达式,用于匹配指定范围内的任意一个字符。
2. Java 中的正则表达式
在 Java 中,使用正则表达式通常涉及以下步骤:
- 编译正则表达式:使用
Pattern.compile()
方法将正则表达式字符串编译为Pattern
对象。 - 创建匹配器:使用
Pattern
对象的matcher()
方法,传入要匹配的字符串,创建Matcher
对象。 - 执行匹配操作:使用
Matcher
对象的方法,如find()
、matches()
、lookingAt()
等,执行匹配操作。
2.1. 编译正则表达式
Pattern pattern = Pattern.compile("正则表达式");
2.2. 创建匹配器
Matcher matcher = pattern.matcher("待匹配的字符串");
2.3. 执行匹配操作
boolean found = matcher.find(); // 查找下一个匹配子串
3. 常用正则表达式示例
3.1. 验证电子邮件地址
String regex = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";
3.2. 验证手机号码
String regex = "^1[3-9]\\d{9}$";
3.3. 提取 URL
String regex = "https?://\\w+\\.\\w+\\.\\w+";
4. 注意事项
- 正则表达式区分大小写,除非使用
(?i)
标志。 - 使用正则表达式处理大量文本时,注意性能问题。
- 在使用特殊字符时,需要进行转义。
5. 结论
Java 的正则表达式功能强大且灵活,适用于各种字符串处理任务。通过掌握正则表达式的基础知识和 Java 中的相关 API,开发者可以轻松实现复杂的字符串匹配和操作。