iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >Java的正则?:?=?!是什么意思
  • 967
分享到

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

2024-04-02 19:04:59 967人浏览 八月长安
摘要

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

本文小编为大家详细介绍“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)这个捕获组捕获到的值。  “注意:反向引用表示捕获到的值,而不是再次使用正则表达式”

这里用到了一个新的知识点,反向引用。

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

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

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

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

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

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

// 前瞻:
exp1(?=exp2)   查找exp2前面的exp1
// 后顾:
(?<=exp2)exp1  查找exp2后面的exp1
// 负前瞻:
exp1(?!exp2)   查找后面不是exp2的exp1
// 负后顾:
(?<!exp2)exp1  查找前面不是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的正则?:?=?!是什么意思”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网node.js频道。

--结束END--

本文标题: Java的正则?:?=?!是什么意思

本文链接: https://www.lsjlt.com/news/91437.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java的正则?:?=?!是什么意思
    本文小编为大家详细介绍“Java的正则:=!是什么意思”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java的正则:=!是什么意思”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。...
    99+
    2024-04-02
  • php正则表达式是什么意思
    在php中,正则表达式是描述字符排列模式的一种自定义语法规则,自身具有一套非常完整的、可以编写模式的语法体系,提供了一种灵活且直观的字符串处理方法。正则表达式描述的是一种字符串匹配模式,可以用来检查一个字符串中是否含有某种子串、将匹配的子串...
    99+
    2023-05-14
    php 正则表达式
  • Java Servlet是什么意思
    这篇文章给大家分享的是有关Java Servlet是什么意思的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Servlet 是什么?Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来...
    99+
    2023-06-02
  • java sdk是什么意思
    Java SDK(Software Development Kit)是用于Java编程的开发工具包。它包含了一组用于开发、调试和运行...
    99+
    2023-09-25
    java sdk
  • java class是什么意思
    Java class是Java编程语言中的一个关键概念,它是用来描述具有相同属性和行为的对象的模板或蓝图。类定义了对象的结构和行为,...
    99+
    2024-04-02
  • java的枚举是什么意思
    这篇文章主要介绍“java的枚举是什么意思”,在日常操作中,相信很多人在java的枚举是什么意思问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java的枚举是什么意思”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-17
  • java中的string是什么意思
    Java中的String是字符串的意思,它是一种类类型,代表了一串字符序列,字符串是不可变的,一旦一个字符串被创建,它的值就不能被改变。Java没有内置的字符串类型,而是在标准Java类库中提供了一个String类来创建和操作字符串,在Ja...
    99+
    2023-07-10
  • JAVA中的SPI是什么意思
    这篇文章主要介绍了JAVA中的SPI是什么意思,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. SPI介绍SPI全称Service Provider Interface,是...
    99+
    2023-06-29
  • php中$this的就近原则是什么意思
    这篇文章主要讲解了“php中$this的就近原则是什么意思”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php中$this的就近原则是什么意思”吧!说明$this的就近原则不仅适用于priv...
    99+
    2023-06-20
  • java封装是什么意思
    Java封装是一种面向对象编程的特性,它指的是将数据和方法封装在一个类中,并对外部隐藏对象的内部实现细节,只提供公共的接口供其他类访...
    99+
    2024-04-02
  • .NET与Java是什么意思
    小编给大家分享一下.NET与Java是什么意思,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  简介  .NET是迎接J微软推出的一种新的软件运行平台,它包括一整...
    99+
    2023-06-03
  • java和javascript是什么意思
    今天就跟大家聊聊有关java和javascript是什么意思,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。本文操作环境:Windows7系统、jav...
    99+
    2024-04-02
  • java中class是什么意思
    在Java中,class是一种用于定义对象的模板或蓝图。一个class包含了对象的属性和方法,通过实例化这个class,我们可以创建...
    99+
    2024-04-02
  • Java中Object是什么意思
    这篇文章主要介绍Java中Object是什么意思,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!public class TestObject {public static&nb...
    99+
    2023-06-02
  • java重载是什么意思
    在Java中,重载是指在同一个类中可以拥有多个同名方法,但这些方法的参数列表必须不同(参数的类型、个数或顺序不同)。在调用这些同名方...
    99+
    2024-04-02
  • java中private是什么意思
    在Java中,private是一种访问修饰符,用于控制类中的成员(变量或方法)的访问权限。当一个成员被声明为private时,它只能...
    99+
    2023-08-24
    java
  • JAVA中->指的是什么意思
    这篇文章主要介绍JAVA中->指的是什么意思,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复的;2、Queue队列:有序,可重复的...
    99+
    2023-06-14
  • java全栈指的是什么意思
    这篇文章给大家分享的是有关java全栈指的是什么意思的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布...
    99+
    2023-06-14
  • Java中的抽象是什么意思
    这篇文章主要介绍Java中的抽象是什么意思,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言:数据抽象是一种仅向用户显示基本细节的属性。不向用户显示琐碎或非必需的单元。例如:汽车被视为汽车而不是其单个组件。数据抽象也...
    99+
    2023-06-21
  • java中service指的是什么意思
    service指的是服务器,在开发过程中,像servlet这种类,是为我们服务的,满足我们拦截请求并响应的需要,这就是服务,而servelt服务是基于http协议的,service一般做app、web后台需要留成接口做业务数据操作的。...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作