千家信息网

Java的正则?:?=?!是什么意思

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,本文小编为大家详细介绍"Java的正则?:?=?!是什么意思",内容详细,步骤清晰,细节处理妥当,希望这篇"Java的正则?:?=?!是什么意思"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一
千家信息网最后更新 2025年01月18日Java的正则?:?=?!是什么意思

本文小编为大家详细介绍"Java的正则?:?=?!是什么意思",内容详细,步骤清晰,细节处理妥当,希望这篇"Java的正则?:?=?!是什么意思"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

Java 正则?:?=?!的理解

1:解释是否获取匹配并保存匹配的值

  1. ()表示捕获分组,获取匹配,()把每个分组里的匹配的值保存起来

  2. (?:)表示非捕获分组,获取匹配,非捕获分组匹配的值不会保存起来,可以提高程序执行速度

  3. (?=?!?<=?

举例说明:

// 是否获取匹配测试文本 abxoxcd  ..(xox)..       匹配 abxoxcd  ..(?:xox)..     匹配 abxoxcd  ..(?=xox)..     匹配 abxo获取匹配,一般匹配到了字符之后,该字符就被消耗、输出。不获取匹配,不会消耗字符。// 是否保存匹配的值测试文本 AAABBCaaA E666FF  (A)\\1*       匹配 AAA、A  (\\w)\\1+     匹配 AAA、BB、aa、666、FF  (?:A)(B)\\1*  匹配 ABB因为非捕获分组不保存匹配的值,所以  (?:A)(B)\\1* 匹配 ABB 第一个\\1表示(B)这个捕获组捕获到的值。  "注意:反向引用表示捕获到的值,而不是再次使用正则表达式"这里用到了一个新的知识点,反向引用。

1、正则表达式中 "\number" 表示反向引用,表示引用一个捕获组,需要和小括号 "()" 一起使用

2、正则捕获组的下标从 0 开始,下标为 0 的组是整个表达式,下标为 1 的表示从左到右开始的第一个左括号所包含的值,后面的数字以此类推

3、捕获组在匹配成功时,会将子表达式匹配到的内容,保存到内存中一个以数字编号的组里,可以简单的认为是对一个局部变量进行了赋值,这时就可以通过反向引用的方式,引用这个局部变量的值。

4、反向引用必须要与捕获组一同使用,如果没有捕获组,而使用了反向引用的语法,不同语言的处理方式不一致,有的语言会抛异常,有的语言会当作普通的转义处理

2:解释正向预查和反向预查

// 前瞻:exp1(?=exp2)   查找exp2前面的exp1// 后顾:(?<=exp2)exp1  查找exp2后面的exp1// 负前瞻:exp1(?!exp2)   查找后面不是exp2的exp1// 负后顾:(?

举例说明:

// 正向预查和反向预查测试文本 abxoxcd  ..(?=xox)  匹配 ab  ..(?=oxo)  匹配不到  (?=xox)..  匹配xo  (?<=xox).. 匹配 cd预查只需要记住:1、环顾全局定位到非捕获组;2、不获取匹配(不消耗字符),不保存匹配的值(不能使用反向引用)

加餐

提问:强密码(必须包含数字、小写字母和大写字母三种字符,即这三种字符的组合,且不能使用特殊字符,长度在8-16之间),你认为必须是 1个数字+1个小写字母+1个大写字母 这种顺序吗?

^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,16}$

(?=.*[0-9])表示任意字符+一个数字

(?=.*[a-z])表示任意字符+一个小写字母

  (?=.*[A-Z])表示任意字符+一个大写字母

  [0-9a-zA-Z]{8,16}表示8-16个数字、大小写字母

当有多个正向预查规则时它们是并列的,不是串行的

测试文本 abc2abc  \\d(?=a)(?=b)  匹配不到  \\d(?=a)(?=.b) 匹配 2   当然这是为了演示它的规则,其实可以写 \\d(?=ab)这里主要的原因是:不获取匹配(不消耗字符)。对于 ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,16}$ 其实整个正则表示可以分为三部分:/^(?=.*[0-9])[0-9a-zA-Z]{8,16}$//^(?=.*[a-z])[0-9a-zA-Z]{8,16}$//^(?=.*[A-Z])[0-9a-zA-Z]{8,16}$/待匹配字符串必须同时满足这三部分才可以

读到这里,这篇"Java的正则?:?=?!是什么意思"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

字符 正则 字母 数字 分组 文本 表达式 测试 消耗 意思 下标 内容 大写 大写字母 小写 文章 语言 处理 前瞻 变量 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库的物理备份包括什么 戴尔数据库服务器重设密码 绝地求生俄罗斯服务器怎么设 怎么利用服务器下载视频 谁履行网络安全监督管理职责 联想启天管理服务器优点 网络安全问题研究作文 西安外资软件开发有限公司 桓台网络审批oa软件开发公司 数据库导入信息显示文本过长 2b2t服务器怎么进国际版 山东济南口碑好的浪潮存储服务器 网络技术挑战赛是做什么的 北京质量软件开发单价 数据库列表匹配主键 飞卢怎么通过网络安全验证 对于《服务器配置与管理》 软件开发属于第二产业吗 网络安全宣传郑州高新区 t3数据库连接教程 狮控互联网科技 mysql网络数据库 数据库会自己停止掉啥情况 甘南州网络安全和信息化工作 怎恢复数据库 软件开发年度表彰 国家十五规划三大基础数据库 网络安全项目招标信息 华为对网络安全定义是什么 电脑和网络技术
0