当前位置:首页 > Java

java 如何用正则表达式

2026-02-05 11:14:37Java

正则表达式基础语法

Java中使用正则表达式主要通过java.util.regex包下的PatternMatcher类实现。基本语法如下:

  • ^ 匹配字符串开头
  • $ 匹配字符串结尾
  • . 匹配任意单个字符(除换行符)
  • \d 匹配数字(等价于[0-9]
  • \D 匹配非数字
  • \w 匹配字母、数字或下划线
  • \W 匹配非字母、数字或下划线
  • [abc] 匹配方括号内的任意字符
  • [^abc] 匹配不在方括号内的任意字符
  • a|b 匹配a或b
  • * 匹配前一个字符0次或多次
  • + 匹配前一个字符1次或多次
  • ? 匹配前一个字符0次或1次
  • {n} 匹配前一个字符恰好n次
  • {n,} 匹配前一个字符至少n次
  • {n,m} 匹配前一个字符n到m次

创建Pattern对象

通过Pattern.compile()方法创建正则表达式模式对象:

java 如何用正则表达式

Pattern pattern = Pattern.compile("正则表达式");

例如匹配邮箱的正则:

Pattern emailPattern = Pattern.compile("^[\\w.-]+@[\\w.-]+\\.[a-z]{2,}$");

使用Matcher进行匹配

通过pattern.matcher()方法创建匹配器对象:

java 如何用正则表达式

Matcher matcher = pattern.matcher("要匹配的字符串");
boolean isMatch = matcher.matches();  // 完全匹配

或者使用find()方法查找部分匹配:

while(matcher.find()) {
    System.out.println("找到匹配: " + matcher.group());
}

常用正则表达式示例

  1. 验证手机号(中国大陆):
Pattern phonePattern = Pattern.compile("^1[3-9]\\d{9}$");
  1. 提取HTML标签中的内容:
Pattern htmlPattern = Pattern.compile("<.*?>(.*?)</.*?>");
Matcher htmlMatcher = htmlPattern.matcher("<p>Hello</p>");
if(htmlMatcher.find()) {
    System.out.println(htmlMatcher.group(1));  // 输出Hello
}
  1. 分割字符串:
String[] parts = "a,b,c".split("\\s*,\\s*");
  1. 替换字符串:
String result = "a1b2c3".replaceAll("\\d", "-");

捕获组的使用

使用括号()定义捕获组:

Pattern datePattern = Pattern.compile("(\\d{4})-(\\d{2})-(\\d{2})");
Matcher dateMatcher = datePattern.matcher("2023-05-20");
if(dateMatcher.matches()) {
    String year = dateMatcher.group(1);  // 2023
    String month = dateMatcher.group(2);  // 05
    String day = dateMatcher.group(3);  // 20
}

性能优化建议

  1. 预编译常用正则表达式模式,避免重复编译
  2. 对于简单匹配,可以直接使用String类的matches()方法
  3. 避免过度复杂的正则表达式,必要时分步处理
  4. 考虑使用边界匹配器\b提高精确度

常见问题处理

  1. 转义特殊字符时需要使用双反斜杠:
// 匹配点号
Pattern dotPattern = Pattern.compile("\\.");
  1. 处理多行文本时使用Pattern.MULTILINE标志:
Pattern multiLinePattern = Pattern.compile("^start", Pattern.MULTILINE);
  1. 忽略大小写匹配:
Pattern caseInsensitivePattern = Pattern.compile("abc", Pattern.CASE_INSENSITIVE);

分享给朋友:

相关文章

如何用java画图

如何用java画图

使用 Java 绘图基础 Java 提供了多种绘图方式,主要通过 java.awt 和 javax.swing 包中的类实现。以下是几种常见的绘图方法。 使用 Graphics 类绘图 Graph…

如何用java编程

如何用java编程

Java编程基础指南 环境配置 安装Java开发工具包(JDK),推荐使用最新版本。配置环境变量,确保JAVA_HOME指向JDK安装路径,并将bin目录添加到系统PATH中。验证安装是否成功:…

react如何用jq

react如何用jq

在React中使用jQuery React和jQuery可以一起使用,但需要注意两者的DOM操作方式不同。React使用虚拟DOM,而jQuery直接操作真实DOM。混合使用时需谨慎避免冲突。 安装…

如何用react做增删

如何用react做增删

使用React实现增删功能 在React中实现增删功能通常涉及状态管理和列表渲染。以下是一个完整的实现方案: 初始化状态 需要定义一个状态来存储列表数据,可以使用useState钩子: c…

如何用npm下载react

如何用npm下载react

安装Node.js和npm 确保系统中已安装Node.js,因为npm是Node.js的包管理器。可以从Node.js官网下载并安装最新稳定版本。安装完成后,通过以下命令验证安装是否成功: node…

如何用react写轮播

如何用react写轮播

使用React实现轮播组件 基本结构 创建一个基础的轮播组件需要管理当前显示的幻灯片索引和切换逻辑。使用useState来跟踪当前激活的幻灯片。 import React, { useState }…