Java 正则表达式
介绍
正则表达式(Regular Expression,简称 regex)是一种强大的工具,用于匹配、搜索和操作文本。在 Java 中,正则表达式通过 java.util.regex
包提供支持。正则表达式可以用于验证输入、提取数据、替换文本等场景。
Java 中的正则表达式主要由两个类支持:
Pattern
:表示一个编译后的正则表达式。Matcher
:用于对输入字符串进行匹配操作。
基本语法
正则表达式由普通字符(如字母、数字)和特殊字符(称为元字符)组成。以下是一些常见的元字符:
.
:匹配任意单个字符(除了换行符)。\d
:匹配任意数字(等价于[0-9]
)。\D
:匹配任意非数字字符。\w
:匹配任意字母、数字或下划线(等价于[a-zA-Z0-9_]
)。\W
:匹配任意非字母、数字或下划线的字符。\s
:匹配任意空白字符(包括空格、制表符、换行符等)。\S
:匹配任意非空白字符。^
:匹配字符串的开头。$
:匹配字符串的结尾。*
:匹配前面的字符零次或多次。+
:匹配前面的字符一次或多次。?
:匹配前面的字符零次或一次。{n}
:匹配前面的字符恰好 n 次。{n,}
:匹配前面的字符至少 n 次。{n,m}
:匹配前面的字符至少 n 次,但不超过 m 次。
示例:匹配电子邮件地址
以下是一个简单的正则表达式示例,用于匹配电子邮件地址:
java
import java.util.regex.*;
public class RegexExample {
public static void main(String[] args) {
String email = "[email protected]";
String regex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(email);
if (matcher.matches()) {
System.out.println("Valid email address");
} else {
System.out.println("Invalid email address");
}
}
}
输入:
输出:
Valid email address
实际应用场景
1. 验证用户输入
正则表达式常用于验证用户输入,例如验证电话号码、电子邮件地址、密码强度等。
java
String phoneNumber = "123-456-7890";
String regex = "^\\d{3}-\\d{3}-\\d{4}$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(phoneNumber);
if (matcher.matches()) {
System.out.println("Valid phone number");
} else {
System.out.println("Invalid phone number");
}
2. 提取数据
正则表达式可以用于从文本中提取特定格式的数据,例如从日志文件中提取日期和时间。
java
String logEntry = "2023-10-01 12:34:56 INFO: User logged in";
String regex = "(\\d{4}-\\d{2}-\\d{2}) (\\d{2}:\\d{2}:\\d{2})";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(logEntry);
if (matcher.find()) {
System.out.println("Date: " + matcher.group(1));
System.out.println("Time: " + matcher.group(2));
}
3. 替换文本
正则表达式还可以用于替换文本中的特定部分。例如,将文本中的所有数字替换为 #
。
java
String text = "My phone number is 123-456-7890.";
String regex = "\\d";
String replacement = "#";
String result = text.replaceAll(regex, replacement);
System.out.println(result);
输出:
My phone number is ###-###-####.
总结
正则表达式是处理文本的强大工具,尤其在 Java 中,通过 Pattern
和 Matcher
类可以轻松实现复杂的文本匹配和操作。掌握正则表达式的基本语法和常见用法,可以大大提高你的编程效率。
附加资源
练习
- 编写一个正则表达式,验证一个字符串是否为有效的 URL。
- 使用正则表达式从以下文本中提取所有的电子邮件地址:
Contact us at [email protected] or [email protected] for more information.
- 编写一个程序,将文本中的所有电话号码替换为
[PHONE]
。
提示
正则表达式虽然强大,但也可能变得复杂。建议从简单的模式开始,逐步增加复杂性,并在实际项目中多加练习。