我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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的正则?:?=?!是什么意思”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

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

下载Word文档

猜你喜欢

php正则表达式是什么意思

在php中,正则表达式是描述字符排列模式的一种自定义语法规则,自身具有一套非常完整的、可以编写模式的语法体系,提供了一种灵活且直观的字符串处理方法。正则表达式描述的是一种字符串匹配模式,可以用来检查一个字符串中是否含有某种子串、将匹配的子串做替换或者从某个字符串中取出符合某个条件的子串等等。
2023-05-14

php中正则表达式是什么意思

在php中,正则表达式是对字符串操作的一种逻辑公式,是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”可用来表达对字符串的一种过滤逻辑。正则表达式是在处理文本数据时的一项重要而复杂的技术。
2019-04-23

php正则中i表示什么意思

在PHP中,正则表达式的“i”是“in-casesensitive”的缩写,表示的是“区分大小写”的意思,是正则表达式中的修正符;在正则表达式中设定此修正符时,表示正则表达式进行匹配的字符将同时匹配大小写字母,语法为“/ 匹配条件 /i”。
2017-01-02

java是什么意思

Java是一门面向对象编程语言,是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因
java是什么意思
2018-06-27

java -= 是什么意思

java中的“-=”是自减运算符的意思。自增和自减是单目运算符,可以放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量。自增、自减运算符的作用是使变量的值增1或减1。放在操作元前面的自增、自减运算符,会先将变量的值加1或减1,然后再使该变量
java -= 是什么意思
2016-08-30

java中的“=”是什么意思

一、对变量而言等于号具有赋值的作用,比如说a=3,就是把3赋值于a。这个是很简单的,大家都经常赋值,除了判断要双等于号外,但单等于号在初始化对象的时候进行赋值。二、对引用对象而言等于号具有传引用(隐式指针)的作用,这个也不难理解,比如说指针:a=b,对象a的指
java中的“=”是什么意思
2015-04-04

java的this是什么意思

java中this表示类实例本身。this的用法:(推荐:java视频教程)1、表示对当前对象的引用!public class A{public A getA(){return this;//表示获取当前实例本身}}2、表示类的成员变量,而非函数参数,注意在函
java的this是什么意思
2021-11-23

java中的“=”是什么意思?

赋值运算符“=”:(推荐:java视频教程)作用:将运算符右边的表达式的返回值赋值给左边的变量或者是final 修饰的变量。左边:变量,或者是 final修饰的变量右边:可以是任意表达式(返回的值的类型要和左边的兼容)。=是一个赋值运算符,将一个值赋给一个变量
java中的“=”是什么意思?
2022-01-13

Java Servlet是什么意思

这篇文章给大家分享的是有关Java Servlet是什么意思的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Servlet 是什么?Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来
2023-06-02

java中“...”是什么意思

解释:可变长参数,就是这个位置可以传入任意个该类型参数,简单来说就是个数组。如果是形参里面出现,表示的是可变参数,即表示的传入的参数个数是可变,你传多少个参数都被放到一个数组里面。例如:public static void dealArray(int...in
java中“...”是什么意思
2020-02-17

java t是什么意思

JAVA 中是泛型的意思。意思是Tree这个类里面需要用到另外一个类,但是又不能确定要用到的那个类的具体类型,所以暂时用T来代替。当具体的程序知道要用到的那个类型是什么的时候就用那个类型来代替T,例如需要实例化一个Tree类,需要用到的那个类是String,那
java t是什么意思
2016-10-06

java类是什么意思

java类就是具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象。在面向对象的程序设计语言中,类是对一类“事物”的属性与行为的抽象。举一个例子说明下类,比如Person(人)就是一个类,那么具体的某个人“张三”就是“人类”这个
java类是什么意思
2018-02-12

java sdk是什么意思

Java SDK(Software Development Kit)是用于Java编程的开发工具包。它包含了一组用于开发、调试和运行Java应用程序的工具、库和文档。Java SDK包括Java编译器、调试器、运行时环境、类库和相关的文档等
2023-09-25

Java中的final是什么意思?

java中的final是关键字,可以用来修饰引用、方法和类。(推荐:java视频教程)1、用来修饰一个引用如果引用为基本数据类型,则该引用为常量,该值无法修改;如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不
Java中的final是什么意思?
2014-08-24

java中的if是什么意思

java中的if是条件语句的引导词,一个if语句包含一个布尔表达式和一条或多条语句。if关键字指示有条件地执行代码块。条件的计算结果必须是布尔值。语法if 语句的语法如下: (推荐学习:java课程)if(布尔表达式){ //如果布尔
java中的if是什么意思
2020-01-09

java中的for是什么意思

for,一种循环结构的引导词 for关键字用于指定一个在每次迭代结束前检查其条件的循环。 (推荐学习:java课程)for 循环,使一些循环结构变得更加简单。for循环执行的次数是在执行前就确定的。语法格式如下:for(初始化;
java中的for是什么意思
2021-02-14

编程热搜

目录