Java——正则表达式

1、什么是正则表达式

一个正则表达式,就是用某种模式去匹配字符串的一个公式。很多人因为它们看上去比较古怪而且复杂所以不敢去使用,不过,经过练习后,就觉得这些复杂的表达式写起来还是相当简单的,而且,一旦你弄懂它
们,你就能把数小时辛苦而且易错的文本处理工作缩短在几分钟(甚至几秒钟)内完成。

2、正则表达式的语法

正则表达式的分类

  • 特殊字符(转义字符'|'

  • 字符匹配符

  • 选择匹配符

  • 限定符

  • 定位符

  • 分组组合和反向引用符

3、元字符(Metacharacter)

3.1转义号 \\

\\符号说明:在我们使用正则表达式去检索某些特殊字符的时候,需要用到转义符号,否则检索不到结果,甚至会报错的。

案例: 用$ 去匹配 "abc("会怎样?用(去匹配"abc("会怎样?

Java的正则表达式中,两个\\代表其他语言中的一个\

需要使用转义字符的场景

. * + () $ / \ ? [] ^ {}

3.2、字符通配符

符号符号说明示例解释
[]可接收的字符列表[efgh]efgh中的任意一个字符
[^]不可接收的字符列表[^abc]abc之外的任意1字符,包括数字和特殊符号
-连字符A-Z任意单个大写字母
.匹配除\n以外的任何字符a..ba开头,b结尾,中间包括2个任意字符长度为4的字符串
\\d匹配单个数字字符,相当于[0-9]\\d{3}(\\d)?包含3个或4个数字的字符串
\\D匹配非单个数字字符,相当于[^0-9]\\D(\\d)*以单个非数字字符开头,后接任意个数字字符串
\\w匹配单个数字、大小写字母字符,相当于[0-9a-zA-Z]\\d{3}\\w{4}以3个数字字符开头的长度为7的数字字符串
\\W匹配非单个数字、大小写字母字符,相当于[^0-9a-zA-Z]\\W+\\d{2}以至少1个非数字字母字符开头,2个数字字符结尾的字符串

3.3、选择通配符|

在匹配某个字符串的时候是选择性的,即:既可以匹配这个,又可以匹配那个,这时你需要用到选择匹配符号(|)

符号符号说明示例解释
|匹配"|"之前或之后的表达式ab|cdab或者cd

3.4、限定符

符号含义示例说明匹配输入
*指定字符重复0次或n次(无要求,零到多)(abc)*仅包含任意个abc的字符串,等效于\w*abc abcabcabc
+指定字符重复1次或n次(至少一次,1到多)m+(abc)*以至少1个m开头,后接任意个abc的字符串m mabc mabcabc
?指定字符重复0次或1次(最多一次,0到1)m+abc?以至少1个m开头,后接ababc的字符串mab mabc mmabc
{n}只能输入n个字符[abcd]{3}abcd中字母组成的任意长度为3的字符串abc dbc adc
{n,}指定至少n个匹配[abcd]{3,}abcd中字母组成的任意长度不小于3的字符串aab dbc aaabdc
{n,m}指定至少n个但不多于m个匹配[abcd]{3,5}abcd中字母组成的任意长度不小于3,不大于5的字符串abc abcd aaaaa bcdab

3.5、定位符

符号含义示例说明匹配输入
^指定起始字符^[0-9]+[a-z]*以至少1个数字开头,后接任意个小写字母的字符串123
$指定结束字符^[0-9]\\-[a-z]+$以一个数字开头后接连接符"-",并以至少1个小写字母结尾的字符串m mabc mabcabc
\\b匹配目标字符串的边界abc\\b这里说的字符串的边界指的是子串间有空格,或者是目标字符串的结束位置cabcd cabc ccabc
\\B匹配目标字符串的非边界abc\\B\\b的含义刚刚相反cabcd cabc ccabc

3.6、分组

常用分组构造形式说明
(pattern)非命名捕获。捕获匹配的子字符串。编号为零的第一个捕获是由整个正则表达式模式匹配的文本,其它捕获结果则根据左括号的顺序从1开始自动编号。
(?<name>pattern)命名捕获。将匹配的子字符串捕获到一个组名称或编号名称中。用于name的字符串不能包含任何标点符号,并且不能以数字开头。可以使用单引号替代尖括号,例如:(?'name')
(?:pattern)匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存 储供以后使用的匹配。这对于用"or"字符(|) 组合模式部件的情况很有用。例如,'industr(?:y|ies) '是比'industry|industries'更经济的表达式。
(?=pattern)它是一个非捕获匹配。例如,'Windows (?=95|98|NT|2000)'匹配 "Windows 2000"中的"Windows",但不匹配"Windows 3.1"中的 "Windows"
(?|pattern)该表达式匹配不处于匹配pattern的字符串的起始点的搜索字符串。它是一个非捕获匹配。例如,'Windows (?!95|98|NT|2000)'匹配 "Windows 3.1"中的"Windows",但不匹配"Windows 2000"中的 "Windows"

3.7、修饰符

符号含义示例说明匹配输入
i不区分大小写将匹配设置为不区分大小写,搜索时不区分大小写: Aa 没有区别123
g全局匹配abc/g查找所有的匹配项Google abc tana abc
m多行匹配^abc/gm使边界字符 ^$ 匹配每一行的开头和结尾,记住是多行,而不是整个字符串的开头和结尾abcdf taobao abccc
s特殊字符圆点 . 中包含换行符 \n/abc./s默认情况下的圆点 . 是匹配除换行符 \n 之外的任何字符,加上 s 修饰符之后,. 中包含换行符 \nwert abc cba

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

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

相关文章

vue3实现2d楼宇模型

需求背景解决效果视频效果2dFloor.vue 需求背景 需要实线一个2d楼宇模型&#xff0c;并按照租户温度渲染颜色 解决效果 视频效果 2dFloor.vue <!--/*** author: liuk* date: 2023/12/06* describe: 2d楼宇模型* CSDN:https://blog.csdn.net/hr_beginner?typeblog*/--&g…

7+衰老+分型+预后模型生信思路,没思路的同学们可参考

今天给同学们分享一篇生信文章“Identification and validation of a novel senescence-related biomarker for thyroid cancer to predict the prognosis and immunotherapy”&#xff0c;这篇文章发表在Front Immunol期刊上&#xff0c;影响因子为7.3。 结果解读&#xff1a;…

vue3 print ts打印组件

依赖安装 npm install vue3-print-ts 全局注入 import { createApp } from vue import App from ./App.vue import Print from vue3-print-tsconst app createApp(App) app.directive("print", Print) 页面使用&#xff08;element plus ui 例子&#xff09; &…

STM32CubeIDE的stm32f4xx_hal_conf.h配置文件的一点功能解释

STM32CubeIDE的程序功能写多了&#xff0c;一般不愿意再次使用.ioc这个配置工程的底层了&#xff0c;因为有部分程序是直接改配置的&#xff0c;一旦再次生成就会冲掉自己改的部分&#xff0c;因为不能自己定义 /* USER CODE BEGIN 1 *//* USER CODE END 1 */这样的不被重新生成…

Django大回顾 - 8 中间件、csrf认证相关

【1】中间件 中间件是什么&#xff1f; 中间件顾名思义&#xff0c;是介于request与response处理之间的一道处理过程&#xff0c;相对比较轻量级&#xff0c;并且在全局上改变django的输入与输出。因为改变的是全局&#xff0c;所以需要谨慎实用&#xff0c;用不好会影响到性能…

docker镜像管理,仓库管理基本命令

镜像管理 搜索镜像 语法&#xff1a; docker search 镜像名 [-f stars100] [rootlocalhost ~]# docker search nginx NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx …

React Node.js 和 Prisma 构建全栈框架

特点 快速入门&#xff1a;由于其表现力强&#xff0c;您可以使用很少的简洁、一致的声明性代码从头开始创建和部署生产就绪的 Web 应用程序。无样板代码&#xff1a;通过抽象出复杂的全栈功能&#xff0c;可以减少样板代码。这意味着需要维护和理解的代码更少&#xff01;这也…

用100ask 6ull配合 飞凌 elf1的教程进行学习的记录 - ap3216

100ask板子 不用改 ap3216.c "ap3216creg.h" 添加到drivers/misc 从这抄的: https://gitee.com/flameboyence/linux_driver_example/tree/master/22_i2c #include <linux/types.h> #include <linux/kernel.h> #include <linux/delay.h> #includ…

2023亚太地区五岳杯量子计算挑战赛

计算电源网 (CPN&#xff09;布局优化 1. 介绍 计算能力网络 &#xff08;CPN&#xff09;是一种基于业务需求分配和调度计算资源的新型信息基础设施&#xff0c;计算资源通常由终端用户、边缘服务器和云服务器组成。该网络旨在满足各种计算任务的需求。根据计算需求的空间分…

Qt/C++音视频开发57-切换音视频轨道/切换节目流/分别切换音频视频轨道

一、前言 对各种音视频文件格式的支持&#xff0c;是一个播放器的基础功能。一般的音视频文件只有1路流&#xff0c;比如音频文件只有1路音频流&#xff0c;视频文件只有1路音频1路视频流&#xff0c;实践过程中发现&#xff0c;还有一种ts格式的文件&#xff0c;可能有多路流…

Unity 关于transform.parent与transform.root

在Unity中我们要访问上层对象&#xff0c;他有两个属性&#xff1a;transform.parent和transform.root。 不过它们是有区别的。 transform.parent属性返回的是对象的父级Transform组件&#xff0c;父级就是它的上一级。假如游戏对象没有父对象&#xff0c;那么返回null。 而…

批量免费AI写作工具,批量免费AI写作软件

人工智能&#xff08;AI&#xff09;的应用在各个领域不断创新。面对繁重的写作任务,我们应该怎么完成&#xff1f;本文将专心分享批量免费AI写作的方法、工具以及选择时需要注意的事项。 批量免费AI写作的方法 利用开源AI模型 一种常见的批量免费AI写作方法是利用开源的AI模…

2024年十大最好猫罐头有哪些?2024年10款最好的猫罐头盘点

我发现不少人有这样的困扰&#xff01;买到各种数值都很好的猫罐头后&#xff0c;猫咪一点都不吃。或者是猫咪吃了猫罐头之后&#xff0c;吃了一段时间后就软便身体不舒服。 通过本文&#xff0c;我将与大家盘点2024年10款最好的猫罐头&#xff0c;并提供一些选购猫罐头的小妙招…

第三方组件自定义扫描规则

第三方例如dubbo自定义扫描组件规则方式注入进容器。例如DubboService注解的类注入进容器中&#xff0c;实现ImportBeanDefinitionRegistrar接口&#xff0c;并通过Import注解注入。 Import除了注入ImportBeanDefinitionRegistrar类&#xff0c;还可以注入配置类Configuration和…

Spacemesh、Kaspa和Chia的全面对比!

当今区块链领域&#xff0c;PoST&#xff08;Proof of Space and Time&#xff09;共识算法引领着一股新的技术浪潮。在这个热潮下&#xff0c;Chia项目作为PoST共识机制的经典项目&#xff0c;和目前算力赛道备受瞩目的Kaspa项目&#xff0c;都是不可忽视的存在。虽然这两个项…

虚拟数字人直播软件,是如何提升直播带货效率的?

近年来&#xff0c;随着直播带货的兴起&#xff0c;虚拟数字人直播软件成为了一个备受瞩目的新兴领域。无人直播带货通过虚拟数字人主持直播和推销产品&#xff0c;为商家带来了全新的营销方式。那么&#xff0c;虚拟数字人直播软件是如何进行无人直播带货的&#xff0c;有哪些…

Linux入门指南:Linux环境变量解析

Linux环境变量解析 前言基本概念和作用常见的环境变量设置环境变量Shell脚本和环境变量环境变量的一些小规则 前言 你是不是经常听说Linux环境变量&#xff0c;但又对它一头雾水&#xff1f;别着急&#xff0c;让我们一起来揭开这个神秘的面纱&#xff0c;探索一番吧&#xff…

【网络安全技术】IPsec——AH和ESP

一、IPsec通信 主要是两个协议&#xff0c;认证头AH&#xff08;Authentication Header&#xff09;和封装安全载荷ESP&#xff08;Encapsulate Security Payload&#xff09;。AH提供了认证&#xff08;integrity&#xff0c;抗否认&#xff0c;抗重放&#xff09;&#xff0c…

为什么发布实验报告

各位为什么能够看到这篇博文&#xff0c;90%的缘故是因为搜索到了完全雷同的实验报告&#xff0c;如果不是这个原因来的&#xff0c;后面部分可以不看了。 博主本人最近终于有被所谓查水表&#xff0c;并且试图开盒&#xff0c;当然博主不在意&#xff0c;毕竟当年缘分已尽&…

Python中字符串列表的相互转换详解

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在Python编程中&#xff0c;经常会遇到需要将字符串列表相互转换的情况。这涉及到将逗号分隔的字符串转换为列表&#xff0c;或者将列表中的元素连接成一个字符串。本文将深入讨论这些情景&#xff0c;并提供丰富…