当前位置: 首页 > article >正文

Java 正则表达式详解及实用案例

Java 正则表达式详解及实用案例

正则表达式是一种强大的工具,用于处理字符串匹配和文本解析。在这篇博客中,我们将通过代码示例,详细讲解正则表达式的基本语法规则以及在Java中的实际应用

什么是正则表达式?

正则表达式(Regular Expression)是一种用来描述字符模式的规则。它可以用来验证字符串是否符合规则,或者从一段文本中提取特定的子字符串

正则表达式的典型应用:

  • 字符串校验(如校验手机号码、邮箱地址等)
  • 文本搜索与替换
  • 数据解析

Java 正则表达式的基本用法

在Java中,PatternMatcher类是处理正则表达式的核心。以下是几个关键概念和用法:

(1) 字符类

字符类用来匹配特定范围内的字符。以下是常见的字符类:

表达式描述
[abc]匹配 abc
[^abc]匹配除 abc 以外的字符
[a-zA-Z]匹配任意大小写英文字母
[a-d[m-p]]匹配 a-dm-p 范围内的字符
[a-z&&[^bc]]匹配 a-z 中除了 bc 的字符

代码示例:

java复制代码System.out.println("a".matches("[abc]")); // true
System.out.println("z".matches("[abc]")); // false
System.out.println("bc".matches("[abc][abc]")); // true

(2) 预定义字符类

预定义字符类是字符类的简化写法,用来匹配常见的字符类型

表达式描述
.匹配任意字符
\d匹配数字,等价于 [0-9]
\D匹配非数字,等价于 [^0-9]
\s匹配空白字符
\S匹配非空白字符
\w匹配字母、数字、下划线,等价于 [a-zA-Z0-9_]
\W匹配非字母、数字、下划线

代码示例:

java复制代码System.out.println("123".matches("\\d+")); // true
System.out.println("@".matches("\\w"));    // false
System.out.println("abc_123".matches("\\w+")); // true

(3) 数量词

数量词用来指定字符出现的次数

表达式描述
X?匹配 X 0 次或 1 次
X*匹配 X 0 次或多次
X+匹配 X 1 次或多次
X{n}匹配 X 恰好出现 n
X{n,}匹配 X 至少出现 n
X{n,m}匹配 X 至少出现 n 次但不超过 m

代码示例:

java复制代码System.out.println("123456789".matches("\\d{9}")); // true
System.out.println("123".matches("\\d{1,5}"));    // true

正则表达式实际应用

(1) 校验规则

校验QQ号

规则:6-20位数字,不能以 0 开头

java复制代码String qq = "12345678987";
System.out.println(qq.matches("[1-9]\\d{5,19}")); // true
校验手机号码

规则:以 1 开头,第二位是 3-9,后面跟 9 位数字

java复制代码String phone = "13933447894";
System.out.println(phone.matches("1[3-9]\\d{9}")); // true
校验邮箱地址

规则:用户名部分允许字母、数字、下划线,域名部分允许字母和数字,支持多级后缀

java复制代码String email = "gaomengsuanjia@163.com";
System.out.println(email.matches("\\w+([-+.']\\w+)*@[a-zA-Z0-9]+(\\.[a-zA-Z]{2,})+")); // true
校验座机号码

规则:开头以 0,后接 2-3 位区号,支持带或不带连字符

java复制代码String tel = "020-5698137";
System.out.println(tel.matches("0\\d{2,3}-?[1-9]\\d{4,9}")); // true

(2) 文本查找

利用 PatternMatcher 可以在大段文本中找到符合条件的子串

查找包含版本号的 Java 关键字
java复制代码String text = "java8和java11是长期支持版本,下一个是java17。";
Pattern pattern = Pattern.compile("java\\d{0,2}");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
    System.out.println(matcher.group());
}
// 输出:java8、java11、java17

通过以上代码示例和解释,我们了解了正则表达式的基本规则及在Java中的应用方式。正则表达式作为字符串处理的利器,可以极大提高开发效率。在实际项目中,我们可以利用正则表达式解决各种文本匹配和校验问题

最后,为了帮助大家复习正则表达式,可以玩一个小游戏
在这里插入图片描述


http://www.kler.cn/a/403517.html

相关文章:

  • Shell编程-8
  • YOLOv11来了,使用YOLOv11训练自己的数据集和预测 (保姆级无代码操作版)
  • 使用 npm 安装 Electron 作为开发依赖
  • 【2024亚太杯亚太赛APMCM C题】数学建模竞赛|宠物行业及相关产业的发展分析与策略|建模过程+完整代码论文全解全析
  • CSS实现实现当文本内容过长时,中间显示省略号...,两端正常展示
  • 2021 年 3 月青少年软编等考 C 语言三级真题解析
  • 容器运行时 AND Docker
  • 白嫖网络建设与运维文档,视频,加入知识星球和博客地址
  • 什么是 C++ 中的初始化列表?它的作用是什么?初始化列表和在构造函数体内赋值有什么区别?
  • 【Lucene】详解倒排表的结构,如何实现词典与文档的映射关系
  • 数据结构概述及线性结构
  • IL-AD
  • 付费会员数量统计错误修复
  • RabbitMQ 高级特性——延迟队列
  • vitess使用:从部署到go客户端连接查询
  • 深入解析PostgreSQL中的PL/pgSQL语法
  • React Native 全栈开发实战班 - 用户界面之手势系统应用
  • Android ConstraintLayout 基础
  • Day03_AJAX原理 (黑马笔记)
  • Python从0到100(七十三):Python OpenCV-OpenCV实现手势虚拟拖拽
  • 2025年软考初级【信息处理技术员】考试大纲
  • SELinux 的端口号权限以及使用 semanage 工具添加权限
  • 《TCP/IP网络编程》学习笔记 | Chapter 12:I/O 复用
  • Ubuntu 22.04 上快速搭建 Samba 文件共享服务器
  • 微信小程序的医院预约挂号系统
  • netcore Kafka