Java 正则表达式代码演示

正则表达式(Regular Expressions)是一种用于描述字符串匹配模式的强大工具。在 Java 中,可以使用 java.util.regex 包来处理正则表达式。

文章目录

  • 一、基本用法
  • 二、高级用法

一、基本用法

  1. 导入正则表达式类:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
  1. 编译正则表达式:
String regex = "[\\u4e00-\\u9fa5]+"; // 匹配一个或多个中文汉字
Pattern pattern = Pattern.compile(regex);
  1. 创建 Matcher 对象:
String input = "这个字符串包含中文汉字。";
Matcher matcher = pattern.matcher(input);
  1. 查找匹配项:
while (matcher.find()) {System.out.println("匹配找到: " + matcher.group());
}
  1. 提取匹配细节:
while (matcher.find()) {int start = matcher.start();int end = matcher.end();String match = matcher.group();System.out.println("匹配找到: " + match);System.out.println("起始索引: " + start);System.out.println("结束索引: " + end);
}
  1. 替换匹配项:
String input = "这个字符串包含 123 个中文汉字 456。";
String replaced = pattern.matcher(input).replaceAll("XXX");
System.out.println("替换后的字符串: " + replaced); // 输出:这个字符串包含 XXX 个中文汉字 XXX。

二、高级用法

  1. 中文邮箱地址验证:
String regex = "^[\\w\\.-]+@[\\w\\.-]+\\.[\\w\\.-]{2,}$";
Pattern emailPattern = Pattern.compile(regex);
String email = "johndoe@example.com";
Matcher emailMatcher = emailPattern.matcher(email);
if (emailMatcher.matches()) {System.out.println("有效邮箱地址: " + email);
} else {System.out.println("无效邮箱地址: " + email);
}
  1. 中文手机号码验证:
String regex = "^[1345789][0-9]{9}$";
Pattern phonePattern = Pattern.compile(regex);
String phoneNumber = "13512345678";
Matcher phoneMatcher = phonePattern.matcher(phoneNumber);
if (phoneMatcher.matches()) {System.out.println("有效手机号码: " + phoneNumber);
} else {System.out.println("无效手机号码: " + phoneNumber);
}
  1. 提取中文姓名和年龄:
String regex = "姓名:([\\u4e00-\\u9fa5]+) 年龄:(\\d+)";
Pattern pattern = Pattern.compile(regex);
String input = "姓名:张三 年龄:30, 姓名:李四 年龄:25";
Matcher matcher = pattern.matcher(input);while (matcher.find()) {String name = matcher.group(1); // 提取第一个组(中文姓名)int age = Integer.parseInt(matcher.group(2)); // 提取第二个组(年龄)System.out.println("姓名: " + name + ", 年龄: " + age);
}
  1. 使用限定符:
  • 匹配特定数量的出现:
String regex = "ab{2}"; // 匹配 "ab" 恰好两次
  • 匹配最小数量的出现:
String regex = "ab{3,}"; // 匹配 "ab" 三次或更多次
  • 匹配出现次数范围:
String regex = "ab{2,5}"; // 匹配 "ab" 两次到五次

5. 使用正向/反向预言:

正向预言:正向预言使用 (?= 语法,用来指定匹配模式前面必须出现的子模式。例如:

\w+(?<=a):匹配以 "a" 结尾的单词后面的单词
(?<=\\d{3})\\d{3}:匹配前面有三个数字的三个数字

反向预言:反向预言使用 (?!) 语法,用来指定匹配模式前面不能出现的子模式。例如:

\w+(?!b):匹配不以 "b" 开头的单词
(?<!\\d)\\d{3}:匹配前面没有数字的三个数字
  • 正向预言:
String regex = "\\w+(?<=\\b[A-Z]\\b)"; // 匹配紧跟在首字母大写单词后的单词
  • 反向预言:
String regex = "\\w+(?!\\b[AEIOUaeiou]\\b)"; // 匹配不以元音字母开头的单词

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/5905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Easy TCP Analysis上线案例库功能,为用户提供一个TCP抓包分析案例分享学习的平台

​案例库&#xff0c;提供给用户相互分享TCP抓包故障排查案例或是经典学习案例的功能&#xff0c;任何用户都可从案例库查看其它用户分享的案例&#xff0c;每个用户也都可以上传自己的案例&#xff0c;经过平台审核去重即可展示在案例库。 对于学习&#xff0c;最典型的三次握…

webscoket+webrtc实现语音通话

1.项目方案 前端采用webrtc创建音频上下文&#xff0c;后创建音频源输入和音频处理器&#xff0c;连接音频输入与处理器&#xff0c;处理器再连接到音频输出&#xff08;扬声器&#xff09;&#xff0c;再通过事件获取音频数据&#xff0c;把音频数据转换成字节数据通过webscok…

【Docker学习】docker start深入研究

docker start也是很简单的命令。但因为有了几个选项&#xff0c;又变得复杂&#xff0c;而且... 命令&#xff1a; docker container start 描述&#xff1a; 启动一个或多个已停止的容器。 用法&#xff1a; docker container start [OPTIONS] CONTAINER [CONTAINER...] 别名&…

【网络编程】网络基础

TCP/IP五层模型 物理层&#xff1a;负责光/电信号的传递方式. 比如现在以太网通用的网线&#xff08;双绞线&#xff09;、早期以太网采用的的同轴电缆&#xff08;现在主要用于有线电视&#xff09;、光纤&#xff0c;现在的 WIFI无线网使用电磁波等都属于物理层的概念。物理层…

搭建AI大模型步骤

搭建AI大模型需要以下步骤&#xff1a; 数据收集和预处理&#xff1a;收集大量的训练数据&#xff0c;并进行清洗、标注和预处理&#xff0c;使其适合模型训练。 模型选择&#xff1a;根据具体的任务需求&#xff0c;选择适合的深度学习模型&#xff0c;如卷积神经网络&#x…

QtConcurrent::run操作界面ui的注意事项

先说结论&#xff1a;QtConcurrent::run启动的耗时处理函数&#xff0c;不允许处理ui界面对象&#xff0c;如控件&#xff0c;如进度条等等&#xff01; QtConcurrent::run非常好用&#xff0c;胜过QThead的两种方式&#xff08;run和moveToThread&#xff09;&#xff0c;例如…

使用 uni-app 开发 iOS 应用的操作步骤

哈喽呀&#xff0c;大家好呀&#xff0c;淼淼又来和大家见面啦&#xff0c;上一期和大家一起探讨了使用uniapp开发iOS应用的优势及劣势之后有许多小伙伴想要尝试使用uniapp开发iOS应用&#xff0c;但是却不懂如何使用uniapp开发iOS应用&#xff0c;所以这一期淼淼就来给你们分享…

数据结构复习指导之数组和特殊矩阵

文章目录 数组和特殊矩阵 考纲内容 复习提示 前言 1.数组的定义 2.数组的存储结构 3.特殊矩阵的压缩存储 3.1对称矩阵 3.2三角矩阵 3.3三对角矩阵 4.稀疏矩阵 5.知识回顾 数组和特殊矩阵 考纲内容 &#xff08;一&#xff09;栈和队列的基本概念 &#xff08;二&a…

【C++】:const成员,取地址及const取地址操作符重载

目录 一&#xff0c;const成员二&#xff0c;取地址及const取地址操作符重载 一&#xff0c;const成员 将const修饰的“成员函数”称之为const成员函数&#xff0c;const修饰类成员函数&#xff0c;实际修饰该成员函数隐含的this指针&#xff0c;表明在该成员函数中不能对类的…

百度竞价开户详解:步骤、优势与注意事项

随着互联网的普及&#xff0c;网络营销已成为企业不可或缺的一部分。其中&#xff0c;百度竞价作为一种高效的网络推广方式&#xff0c;受到了越来越多企业的青睐。本文将详细介绍百度竞价开户的流程、优势以及注意事项&#xff0c;帮助企业更好地利用这一工具提升品牌知名度和…

UnityWebGL获取话筒实时数据

看了木子李大佬的数字人https://digital.lkz.fit/之后&#xff0c;我也想搞一个&#xff0c;于是开始研究起来&#xff0c;先从WebGL录音开始&#xff0c;一共试了三个插件&#xff0c;个个都有问题…… 1、UnityWebGLMicrophone 用起来没啥问题&#xff0c;但是只能录音&#…

数据结构的队列(c语言版)

一.队列的概念 1.队列的定义 队列是一种常见的数据结构&#xff0c;它遵循先进先出的原则。类似于现实生活中排队的场景&#xff0c;最先进入队列的元素首先被处理&#xff0c;而最后进入队列的元素则要等到前面的元素都被处理完后才能被处理。 在队列中&#xff0c;元素只能…

《恶意不息》是一款什么样的游戏,苹果电脑怎么玩《恶意不息》恶意不息游戏内怎么存档 mac电脑玩游戏

近日steam游戏商城新上架了一款名叫《恶意不息》的游戏十分火爆&#xff0c;那么《恶意不息》是一款什么样的游戏&#xff0c;苹果电脑怎么玩《恶意不息》&#xff1f;一起来看看吧&#xff01; 一、《恶意不息》是一款什么样的游戏&#xff1f; Private Division&#xff0c;…

【蓝桥杯嵌入式】第七届省赛 - 模拟液位检测告警系统

代码开源&#xff0c;Gitee自取 代码开源&#xff0c;Gitee自取 代码开源&#xff0c;Gitee自取 目录 0 前言 1 展示 1.1 源码 1.2 演示视频 1.3 题目展示 2 工程配置 3 资源配置&代码实现 3.1 定时器 3.2 液位检测 3.3 液位阈值设定 3.4 液位阈值设定 3.5 串…

BST二叉搜索树

概念 二叉搜索树&#xff08;Binary Search Tree&#xff0c;简称BST&#xff09;&#xff0c;又称为二叉排序树或二叉查找树&#xff0c;是一种特殊的二叉树数据结构。它具有以下基本性质&#xff1a; 节点的值的有序性&#xff1a;对于BST中的任意一个节点&#xff0c;其左…

Angular基础-搭建Angular运行环境

这篇文章介绍了在Angular项目中进行开发环境搭建的关键步骤。包括node.js安装和配置、安装Angular CLI工具、安装angular-router、创建Angular项目等步骤。这篇文章为读者提供了清晰的指南&#xff0c;帮助他们快速搭建Angular开发环境&#xff0c;为后续的项目开发奠定基础。 …

【Debug】TensorRT报错汇总

搭建TensorRT过程参见&#xff1a;【通俗易懂】Windows系统安装TensorRT 下面是运行中的问题汇总及解决。 报错1. No module named ‘pycuda’ 解决&#xff1a; pip install pycuda报错2. AttributeError: ‘tensorrt.tensorrt.Builder’ object has no attribute ‘max_wor…

在ubuntu 24.04 上安装vmware workstation 17.5.1

ubuntu安装在新组装的i9 14900机器上&#xff0c;用来学习笨叔的ARM64体系结构编程&#xff0c;也熟悉Linux的用法。但有时候写文档总是不方便&#xff0c;还是需要window来用。因此想在ubuntu 24.04上安装Linux版本的vmware worksation 17.5.1以虚拟机的方式安装windows 11。其…

Scala 第三篇 OOP篇

Scala 第三篇 OOP篇 上接&#xff1a;Scala 第二篇 算子篇 前序一、类 1、修饰符2、创建类示例3、类的继承 二、抽象类三、单例对象四、特质 1、动态混入2、抽象类 VS 特质 五、内部类六、样例类七、枚举八、泛型九、隐式类十、包与包对象练习 前序 1、Scala 为纯粹OOP 1.1、…

信息技术内涵及意义

一、信息技术及其演进趋势 &#xff08;一&#xff09;信息技术概况概念 信息技术&#xff08;Information Technology&#xff0c;IT&#xff09;指“应用在信息加工和处理中的科学、技术与工程的训练方法与管理技巧&#xff1b;上述方法和技巧的应用&#xff1b;计算机及其…