1. 正则表达式简介
正则表达式是一种用于描述字符串模式的工具,它定义了一种字符串的搜索模式,可以用来检查字符串是否符合某种模式、替换字符串或者提取符合条件的子串。
2. 基本语法
2.1 字符类
[abc]
:匹配a、b或c[^abc]
:匹配除了a、b、c之外的任意字符[a-z]
:匹配任意小写字母[A-Z]
:匹配任意大写字母[0-9]
:匹配任意数字
2.2 预定义字符类
\d
:匹配任意数字,相当于[0-9]
\D
:匹配任意非数字字符\w
:匹配任意单词字符(字母、数字、下划线),相当于[a-zA-Z0-9_]
\W
:匹配任意非单词字符\s
:匹配任意空白字符\S
:匹配任意非空白字符
2.3 量词
*
:匹配0或多次+
:匹配1或多次?
:匹配0或1次{n}
:匹配n次{n,}
:匹配至少n次{n,m}
:匹配至少n次,至多m次
2.4 定位符
^
:匹配字符串的开始$
:匹配字符串的结束
2.5 转义字符
\
:转义字符,用于匹配特殊字符如[
,]
,(
等
3. Java中的正则表达式
在Java中,正则表达式的使用通常需要借助Pattern
和Matcher
这两个类:
import java.util.regex.*; public class RegexExample { public static void main(String[] args) { String input = "Hello, 2022!"; // 定义正则表达式 String regex = "\\d+"; // 编译正则表达式 Pattern pattern = Pattern.compile(regex); // 创建Matcher对象 Matcher matcher = pattern.matcher(input); // 进行匹配 if (matcher.find()) { System.out.println("Found match: " + matcher.group()); } else { System.out.println("No match found."); } } }
4. 正则表达式在实际应用中的案例
4.1 邮箱格式验证
String emailRegex = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$"; String email = "test@example.com"; if (email.matches(emailRegex)) { System.out.println("Valid email address."); } else { System.out.println("Invalid email address."); }
4.2 提取文本中的数字
String text = "The price of the product is $100.99"; String numberRegex = "\\d+"; Pattern pattern = Pattern.compile(numberRegex); Matcher matcher = pattern.matcher(text); while (matcher.find()) { System.out.println("Found number: " + matcher.group()); }
5. 总结
正则表达式是Java中处理字符串的强大工具,通过灵活运用正则表达式,我们能够更高效地进行字符串的匹配、替换和提取。希望通过这篇总结,大家能够更加熟练地使用Java中的正则表达式。