关于java正则?:、?=、?!的一些理解

互联网 20-1-4

官方文档如图:

上图是官方文档的介绍,总结一下讲了两个知识点:

(学习视频推荐:java视频教程)

1、是否获取匹配并保存匹配的值;

2、正向预查和反向预查。

一、解释是否获取匹配并保存匹配的值

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)这个捕获组捕获到的值。

“注意:反向引用表示捕获到的值,而不是再次使用正则表达式”

二、解释正向预查和反向预查

// 前瞻: 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、环顾全局定位到非捕获组;

相关文章教程推荐:java快速入门

以上就是关于java正则?:、?=、?!的一些理解的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: ?!
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:vue.js有哪些特点?

相关资讯