引言
正则表达式是Java编程中一个非常强大且实用的工具,它可以帮助我们高效地进行字符串的搜索、匹配、替换和提取。本文将通过一系列实战案例,帮助你掌握Java正则表达式的使用,让你轻松破解文本处理难题。
一、正则表达式基础
1.1 普通字符
普通字符包括字母、数字和标点符号,它们在正则表达式中直接代表自己本身。
String regex = "a"; // 匹配字母 'a'
1.2 元字符
元字符具有特殊的含义,它们可以用来指定更复杂的匹配模式。
String regex = "\\d"; // 匹配任意数字
1.3 量词
量词用于指定匹配元素的数量。
String regex = "\\d{3}"; // 匹配恰好三位数字
1.4 定位符
定位符用于指定匹配的位置。
String regex = "^a"; // 匹配字符串开头为字母 'a'
二、实战案例
2.1 验证邮箱地址
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class EmailValidator {
public static void main(String[] args) {
String email = "example@example.com";
String regex = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";
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");
}
}
}
2.2 提取电话号码
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class PhoneNumberExtractor {
public static void main(String[] args) {
String text = "Contact me at +1 (123) 456-7890";
String regex = "\\+\\d\\s*\\(\\d{3}\\)\\s*\\d{3}-\\d{4}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("Found phone number: " + matcher.group());
}
}
}
2.3 替换文本
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TextReplacer {
public static void main(String[] args) {
String text = "The quick brown fox jumps over the lazy dog";
String regex = "\\bfox\\b";
String replacement = "cat";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
String replacedText = matcher.replaceAll(replacement);
System.out.println(replacedText);
}
}
2.4 分割字符串
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class StringSplitter {
public static void main(String[] args) {
String text = "apple,banana,orange";
String regex = ",";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("Found: " + matcher.group());
}
}
}
三、总结
通过以上实战案例,我们可以看到正则表达式在Java编程中的强大功能和广泛用途。熟练掌握正则表达式,将有助于我们更高效地处理文本数据,解决各种文本处理难题。