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

Java中正则表达式

一、概念

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。在众多语言中都可以支持正则表达式,如Perl、PHP、Java、Python、Ruby等。当然在Java中也可以通过处理字符串的方式达到检索,替换文本字符串的目的,但是有了正则表达式写代码更加简洁,通常两三行代码就可以达到目的,当然这也是建立在熟悉正则表达式的基础之上的。

二、正则表达式的规则

  1. 任意一个字符表示匹配任意对应的字符,如a匹配a,7匹配7,-匹配-。

  2. []代表匹配中括号中其中任一个字符,如[abc]匹配a或b或c。

  3. -在中括号里面和外面代表含义不同,如在外时,就匹配-,如果在中括号内[a-b]表示匹配26个小写字母中的任一个;[a-zA-Z]匹配大小写共52个字母中任一个;[0-9]匹配十个数字中任一个。

  4. 在中括号里面和外面含义不同,如在外时,就表示开头,如7[0-9]表示匹配开头是7的,且第二位是任一数字的字符串;如果在中括号里面,表示除了这个字符之外的任意字符(包括数字,特殊字符),如[^abc]表示匹配出去abc之外的其他任一字符。

  5. .表示匹配任意的字符。

  6. \d表示数字。

  7. \D表示非数字。

  8. \s表示由空字符组成,[ \t\n\r\x\f]。

  9. \S表示由非空字符组成,[^\s]。

  10. \w表示字母、数字、下划线,[a-zA-Z0-9_]。

  11. \W表示不是由字母、数字、下划线组成。

  12. ?: 表示出现0次或1次。

  13. +表示出现1次或多次。

  14. *表示出现0次、1次或多次。

  15. {n}表示出现n次。

  16. {n,m}表示出现n~m次。

  17. {n,}表示出现n次或n次以上。

  18. XY表示X后面跟着Y,这里X和Y分别是正则表达式的一部分。

  19. X|Y表示X或Y,比如"food|f"匹配的是foo(d或f),而"(food)|f"匹配的是food或f。

  20. (X)子表达式,将X看做是一个整体。

三、Java中如何写正则表达式

在java中调用正则表达式的类是java.util.regex.Matcher和java.util.regex.Pattern,java.util.regex包是从jdk1.4开始提供的。有多种写法来使用正则表达式。

2.1 仅仅是匹配

2.1.1 实现方式1,匹配一个数字。

public void regex1() {//要匹配的字符String str = "8";//正则表达式String regex = "[0-9]";//返回匹配的结果,匹配成功就返回true,失败就返回false,此次匹配返回true。boolean flag = Pattern.matches(regex, str);System.out.println(flag);}

2.1.2 实现方式2, 匹配3个到5个字母,大小写不限,包括3和5个。

public void regex2() {//要匹配的字符String str = "hello";//正则表达式String regex = "[a-zA-Z]{3,5}";//输出匹配的结果, 此次匹配返回true。System.out.println(str.matches(regex));}

2.1.3. 实现方式3(此种实现方式最快), 匹配11位的电话号码,匹配规则:第一个数字是1,第二个数字是2,3,7,8中任一个,后面9位数字中不包含4。

public void regex3() {//要匹配的字符String str = "13656231253";//正则表达式String regex = "1[2378][0-35-9]{9}";//将给定的正则表达式编译为模式。 如果匹配需求较多,且需用同相同的regex去匹配,就可将这句写到静态模块里面,用的时候直接使用实例pPattern p = Pattern.compile(regex);//创建一个匹配器,匹配给定的输入与此模式。Matcher m = p.matcher(str);//尝试将整个区域与模式进行匹配。boolean flag = m.matches();//输出匹配结果,此次结果为trueSystem.out.println(flag);}

2.2 替换。

public void regexReplace () {//要匹配的字符String str = "12a6B985Ccv65";//正则表达式String regex = "[a-zA-Z]+";//正则表达式String regex2 = "\\d+";//将字符串中英文字母替换为&符号,输出12&6&985&65System.out.println(str.replaceAll(regex, "&"));//将字符串中单个数字或者连续的数字替换为0,输出0a0B0Ccv0System.out.println(str.replaceAll(regex2,"0"));}

2.3 切割,根据大写字母切割字符串。

public void outputStr() {String str = "oneTtowTthreeDfourJfive";String regex = "[A-Z]";String[] arr = str.split(regex);for (String s: arr) {System.out.print(s + " ");}}输出:one tow three four five

相关文章:

Java中正则表达式

一、概念 正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。在众多语言中…...

13 硬链接和软链接

13.1 硬链接和软链接的区别 硬链接:A---B,假设B是A的硬链接,那么只要存在一个,无论删除哪一个,文件都能访问得到。 软链接:类似于快捷方式,删除源文件,快捷方式就访问不了。 13.2 创…...

智能合约安全审计

智能合约安全审计的意义 智能合约审计用于整个 DeFi 生态系统,通过对协议代码的深入审查,可以帮助解决识别错误、低效代码以及这些问题。智能合约具有不可篡改的特点,这使得审计成为任何区块链项目安全流程的关键部分。 代码审计对任何应用…...

矩阵置零(力扣)思维 JAVA

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]] 输入:matrix [[0,1,2,0],[3,4,5,2],[…...

centos制作openssh 9.3p2 rpm包

标题使用源码制作openssh 9.3p2 的rpm包 准备: 操作系统:CentOS Linux release 7.4.1708 (Core) #测试发现rpm包要在什么系统安装需要就需要在什么系统上制作 工具软件:rpm-build 源码文件:openssh-9.3p2.tar.gz x11-ssh-askpas…...

uni-app:切换页面刷新,返回上一页刷新(onShow钩子函数的使用)

切换页面刷新:通过onShow()便可实现 返回上一页通过uni.navigateBack({delta: 1});实现 以返回上一页刷新为例 从B页面返回上一页到A页面 在A页面写入方法refreshHandler() methods: { // 执行刷新逻辑refreshHandler() {uni.request({url: getApp().globalData.…...

全志F1C200S嵌入式驱动开发(调整cpu频率和dram频率)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 f1c200s默认的cpu频率是408M,默认的dram频率是156M。这两个数值,坦白说,都算不上特别高的频率。因为我们的晶振是24M输入,所以408/24=17,相当于整个cpu的频率只是晶振倍频了17…...

idea 设置了 vm options后无法启动

今天想扩展ideaj的JVM 设置了 vm options后无法启动 找了很久,重新卸载后安装也没有用 后面直接打开idea的bat文件 找到自己idea使用的.vmoptions文件,我是因为之前idea有缓存,一直用的我修改的文件,后面删了就可以启动了...

TPS54620RHLR是一款同步降压转换器

TPS54620RHLR是一款同步降压转换器,通过高效率和集成高压侧和低压侧MOSFET,为小型设计进行了优化。通过电流模式控制实现了进一步的空间节省,从而减少了元件数量,并通过选择高开关频率,减少了电感器的占地面积。输出电…...

主机漏洞利用演示MS17-010(永恒之蓝)

ms17-010危害:对被攻击方的电脑造成蓝屏! 申明:本篇文章的用意仅做学习使用 网络搭建环境: 软件:Vmware Workstation 17 攻击机:Kali 靶机环境:Windows 7 Nmap软件的基本功能: …...

2023年第六届河北省研究生数学建模竞赛题目B题Python求解代码

2023年第六届河北省研究生数学建模竞赛题目B题 本文文档与代码视频讲解与下载:【2023河北省研究生数学建模竞赛B题数据集和代码-哔哩哔哩】 https://b23.tv/weulGAO 光伏电池的异常检测与发电产能预测在碳达峰-碳中和的战略背景下,我国的光伏发电技术发…...

【三维点云处理】顶点、面片、邻接矩阵、邻接距离矩阵以及稀疏存储概念

文章目录 vts和faces基础知识vertices-节点(3是点的三维坐标)faces-面片(3是构成三角形面片的3个点) 邻接矩阵邻接距离矩阵(NN500)稀疏矩阵 vts和faces基础知识 vertices-节点(3是点的三维坐标…...

ansible 中的fetch模块的作用是什么

Ansible中的fetch模块用于从远程主机上复制文件到控制主机上。 fetch模块允许用户在远程主机上复制文件或目录,并将其下载到控制主机上的指定位置。它可以在执行Playbook期间执行此操作,也可以在Ad-Hoc命令中使用。 fetch模块的一些常见用途包括&#…...

Zabbix-6.4.4部署及监控配置

一、目标 对zabbix-6.4.4版本进行调研。了解并测试zabbix-6.4.4部署以及监控配置。 二、过程 前言:最新版本的zabbix-6.4.4的要求有所增加,配置要求如下: MySQL版本:8.0.X PHP版本:7.4.X libXML:2.6.1…...

解决 npm ERR! missing script: build 错误的方法

系列文章目录 文章目录 系列文章目录前言一、错误原因二、解决方法:三、注意事项:总结 前言 在使用 npm 进行前端项目构建时,有时会遇到错误信息 “npm ERR! missing script: build”,该错误通常发生在没有定义构建脚本时。本文将…...

json-server创建静态服务器2

上次写的 nodejs创建静态服务器 这次再来个v2.0 利用json-server很方便就可以实现。 vscode打开文件夹,文件夹所在终端: json-server.cmd --watch db.json 这里视频教程是没有上述命令标红的,但是会报错,具体不详&#xff0c…...

开源视频监控管理平台国标GB28181视频EasyCVR电子地图功能展示优化

视频监控综合管理平台EasyCVR可提供的视频能力包括:视频监控直播、云端录像、云存储、录像检索与回看、告警上报、平台级联、云台控制、语音对讲、电子地图、H.265自动转码等,也具备接入AI智能分析的能力。 视频汇聚平台EasyCVR可拓展性强、视频能力灵活…...

端口复用与重映射

端口复用和重映射 STM32F1有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。 大家都知道,MCU都有串口…...

ros2 launch 集合 gazebo yolov8 rviz2

目录 1. ros2 yolov8 检测需要以来一些库,分别是:rclpy cv_bridge std_msgs sensor_msgs sensor_msgs_py vision_msgs 2. 创建一个新的功能包 3. 建立 yolo_launch.py 里面先加载gazebo和rviz2,在创建好本地的yolov8的node文件后也加入进来。 4. 创建好本地的yol…...

SD NAND【商业】

SD NAND【商业】 前言版权推荐SD NAND外观NAND与TF卡的区别雷龙CS SD NAND(贴片式TF卡)性能体验及应用 最后 前言 2023-7-23 16:20:19 因为本人对硬件了解不是很多,所以该篇参考自官方文档。 以下内容源自《【商业】》 仅供学习交流使用 版权 禁止其他平台发布…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

测试markdown--肇兴

day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...

MMaDA: Multimodal Large Diffusion Language Models

CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...