Java正则表达式示例
正则表达式(regex)是一种强大的工具,用于按模式搜索、提取和替换文本。在Java中,正则表达式的处理通过java.util.regex包实现,该包包含两个主要类:Pattern(模式)和Matcher(匹配器)。本文将介绍正则表达式的语法、使用方法,并提供Java中的实际示例。
1. 正则表达式基础语法
正则表达式定义了用于搜索字符串的模式。以下是基本结构:
.— 任意字符(换行符除外)。\\d— 数字(0-9)。\\w— 字母、数字或下划线(拉丁字母)。\\s— 空白字符(空格、制表符、换行符)。[abc]— a、b或c中的任意一个字符。[^abc]— 除a、b、c之外的任意字符。*— 零次或多次重复。+— 一次或多次重复。?— 零次或一次重复。{n,m}— 重复n到m次。^— 字符串开头。$— 字符串结尾。|— 逻辑或。()— 捕获组。
Java中的转义:在Java字符串字面量中,反斜杠\\是转义字符。要传递例如\\d到正则表达式,需要写成"\\\\d"。对于点号,写成"\\\\."。
2. Pattern和Matcher类
在Java中使用正则表达式从编译模式开始:
import java.util.regex.Pattern;import java.util.regex.Matcher;
public class RegexExample { public static void main(String[] args) { // 编译模式 Pattern pattern = Pattern.compile("\\\\d+"); // 为字符串创建Matcher Matcher matcher = pattern.matcher("价格:150卢布,折扣20%"); // 查找所有匹配项 while (matcher.find()) { System.out.println("找到: " + matcher.group()); } }}输出:
找到: 150找到: 20Matcher的主要方法:
find()— 查找下一个匹配项(可多次调用)。matches()— 检查整个字符串是否匹配模式(要求完全匹配)。lookingAt()— 检查字符串是否以模式开头。group()— 返回找到的子字符串(或特定组)。groupCount()— 捕获组的数量。
3. 实际示例
3.1. 电子邮件地址验证
检查字符串是否为有效的电子邮件(简化版本):
public class EmailValidator { public static boolean isValidEmail(String email) { String regex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(email); return matcher.matches(); }
public static void main(String[] args) { System.out.println(isValidEmail("test@example.com")); // true System.out.println(isValidEmail("invalid-email")); // false }}模式解释:
^[a-zA-Z0-9._%+-]+— 本地部分(字母、数字、点、下划线等)。@— @符号。[a-zA-Z0-9.-]+— 域名(字母、数字、点、连字符)。\\\\.[a-zA-Z]{2,}$— 点和顶级域名(至少2个字符)。