Java正则表达式实例教程:初学者指南

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

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

开始课程

Java正则表达式:初学者完整指南



正则表达式(regex)是一种根据模式搜索、提取和替换文本的强大工具。在Java中,正则表达式的处理通过java.util.regex包实现。本文将讲解Java正则表达式的基础知识,学习如何使用Pattern和Matcher类,并介绍实际示例。



1. Java中处理正则表达式的主要类



在Java中,处理正则表达式主要使用两个类:



  • Pattern — 表示编译后的正则表达式。
  • Matcher — 执行文本的搜索和匹配操作。


此外,还有一个便捷方法String.matches(),可以快速检查字符串是否匹配模式,但灵活性较低。



示例1:简单匹配



import java.util.regex.*;

public class RegexExample1 { public static void main(String[] args) { String text = "你好,世界!Java是最好的语言。"; String pattern = "Java";

Pattern p = Pattern.compile(pattern); Matcher m = p.matcher(text);

if (m.find()) { System.out.println("找到单词:" + m.group()); } else { System.out.println("没有匹配"); } }}


输出:找到单词:Java



2. 元字符和字符类



正则表达式使用特殊字符(元字符)来描述模式:



  • . — 任意字符(除换行符外)
  • \\d — 数字 [0-9]
  • \\D — 非数字
  • \\w — 字母、数字或下划线 [a-zA-Z0-9_]
  • \\W — 非单词字符
  • \\s — 空白字符
  • \\S — 非空白字符
  • [abc] — a、b或c中的任意一个字符
  • [^abc] — 除a、b、c外的任意字符


示例2:在文本中查找数字



import java.util.regex.*;

public class RegexExample2 { public static void main(String[] args) { String text = "我的号码:123-456-7890"; String pattern = "\\\\d+"; // 一个或多个数字

Pattern p = Pattern.compile(pattern); Matcher m = p.matcher(text);

while (m.find()) { System.out.println("找到数字:" + m.group()); } }}


输出:

找到数字:123找到数字:456找到数字:7890


3. 量词和边界



量词指定模式元素重复的次数:



  • * — 0次或多次
  • + — 1次或多次
  • ? — 0次或1次
  • {n} — 恰好n次
  • {n,} — n次或更多
  • {n,m} — 从n到m次


边界有助于指定模式的位置:



  • ^ — 字符串开头
  • $ — 字符串结尾
  • \\b — 单词边界


示例3:验证电子邮件地址



import java.util.regex.*;

public class RegexExample3 { public static void main(String[] args) { String email = "user@example.com"; String pattern = "^[\\\\w.-]+@[\\\\w.-]+\\\\.\\\\w{2,}$";

boolean isValid = Pattern.matches(pattern, email); System.out.println("电子邮件有效:" + isValid); }}


输出:电子邮件有效:true



4. 捕获组和文本替换



捕获组允许提取部

博客

书籍推荐