Java正则表达式示例:完整指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

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找到: 20


Matcher的主要方法:

  • 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个字符)。


3.2.

博客

书籍推荐