java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > java正则表达式使用

Java 正则表达式的使用实战案例

作者:甄超锋

本文详细介绍了Java正则表达式的使用方法,涵盖语法细节、核心类方法、高级特性及实战案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起看看吧

下面是 Java 正则表达式详细的使用指南,涵盖语法细节、核心类方法、高级特性及实战案例:

一、正则表达式语法详解

1. 基础字符匹配

2. 字符类([]定义)

3. 量词(控制匹配次数)

4. 边界匹配

5. 分组与引用

6. 零宽断言(预查)

二、Pattern 类详解

1. 编译方法与标志

// 基本编译
Pattern pattern = Pattern.compile(regex);
// 带标志编译(多标志用 | 分隔)
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);

常用标志:

2. 常用方法

三、Matcher 类详解

1. 匹配状态方法

2. 替换与修改方法

3. 重置与重新配置

四、实战案例

1. 验证手机号(中国大陆)

String regex = "^1[3-9]\\d{9}$"; // 1开头,第二位3-9,共11位
boolean isValid = Pattern.matches(regex, "13800138000"); // true

2. 提取 URL 中的域名

String url = "https://www.example.com/path?query=1";
Pattern p = Pattern.compile("(?<=https?://)(\\w+\\.)+\\w+");
Matcher m = p.matcher(url);
if (m.find()) {
    String domain = m.group(); // "www.example.com"
}

3. 清除 HTML 标签

String html = "<div><p>Hello</p></div>";
String text = html.replaceAll("<[^>]+>", ""); // 替换所有标签为空白 → "Hello"

4. 格式化数字(每 3 位加逗号)

String number = "123456789";
String formatted = number.replaceAll("(\\d)(?=(\\d{3})+$)", "$1,"); // "123,456,789"

五、性能与避坑指南

  1. 避免灾难性回溯:复杂正则(如 (a+)+b 匹配 aaaaa)可能导致性能爆炸,建议简化或拆分。
  2. 预编译复用:频繁使用的正则用 Pattern 预编译,避免重复编译开销。
  3. 转义陷阱:注意特殊字符转义(如 .*( 需加 \\)。
  4. 贪婪与非贪婪选择:根据需求选择模式(如提取标签用 .*? 而非 .*)。
  5. 分组索引group(0) 是全匹配,分组从 1 开始计数。

通过掌握上述细节,可应对 Java 中绝大多数正则表达式场景,包括字符串验证、提取、格式化等复杂需求。正则表达式的核心在于多练习,结合具体场景调试模式。

到此这篇关于Java 正则表达式的使用实战案例的文章就介绍到这了,更多相关java正则表达式使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文