当前位置: 首页 > news >正文

Java基础第21天-正则表达式

正则表达式是对字符串执行模式匹配的技术

如果想灵活的运用正则表达式,必须了解其中各种元字符的功能,元字符从功能上大致分为:

  1. 限定符
  2. 选择匹配符
  3. 分组组合和反向引用符
  4. 特殊字符
  5. 字符匹配符
  6. 定位符
  • 转义号\\:在我们使用正则表达式去检索某些特殊字符的时候,需要用到转义符号,否则检索不到结果,甚至会报错,即我们去写需要检索的特殊字符时(如:. * + () $ / \ ? [] ^ {} ),需要在前面加上\\
  • 字符匹配符

其中\\w包含下划线_

\\s表示匹配任何空白字符比如空格、制表符等;

\\S表示匹配任何非空白字符;

 Java正则表达式默认是区分字母大小写的,实现不区分大小写如下:

还有一种方式是在创建正则表达式时,在Pattern.compile(regEx,Pattern.CASE_INSENSITIVE)写下黑色加粗部分

  • 选择匹配符

在匹配某个字符串的时候是选择性的,即:既可以匹配这个,又可以匹配那个,这个时候就需要用到选择匹配符 | 。如ab|cd,匹配ab或cd

  • 限定符

用于指定其前面的字符和组合项连续出现多少次

java匹配默认贪婪匹配,即尽可能匹配多的如1{4,5}表示匹配1111或11111,但是一般都默认匹配多的也就是11111,如果想要匹配到短的字符即非贪婪匹配,则需要在限定符后加一个?

  • 定位符

定位符规定要匹配的字符串出现的位置,比如在字符串的开始还是在结束的位置

  • 分组 

我们可以用圆括号组成一个比较复杂的匹配模式,那么一个圆括号的部分我们可以看作是一个子表达式/一个分组

  • 捕获

把正则表达式中子表达式/分组匹配的内容,保存到内存中以数字编号或显式命名的组里,方便后面引用,从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。组0代表的是整个正则式 

  • 正则表达式的三个常用类Pattern、Matcher、PatternSyntaxException
  1. Pattern类:pattern对象是一个正则表达式对象,Pattern类没有公共构造方法,要创建一个Pattern对象,调用其公共静态方法,它返回一个Pattern对象,该方法接受一个在正则表达式作为他的第一个参数
  2. Matcher类:Matcher对象是对输入字符串进行解释和匹配的引擎,与Pattern类一样,Matcher也没有公共构造方法,需要调用Pattern对象的matcher方法来获得一个Matcher对象
  3. PatternSyntaxException是一个非强制异常类,它表示一个正则表达式模式中的语法错误
  • 反向引用

圆括号的内容被捕获后,可以在这个括号后被使用,从而写出一个比较实用的匹配模式,这个我们称为反向引用,这种引用既可以是在正则表达式内部,也可以是在正则表达式外部,内部反向引用\\分组号,外部反向引用$分组号,如(\\d)\\1就可以找出连续两个相同的数字,(\\d)会匹配到一个任意数字,\\1反向引用会引用第一个()即(\\d)捕获到的内容,从而实现寻找两个连续的相同的数字的效果,同理如果是(\\d)(\\d)\\2\\1就会找到ABBA类型的数字,因为\\2表示与第二个括号捕获的内容相同。

相关文章:

  • Redis高频核心面试题
  • 网络安全职业技能大赛Server2003
  • ECharts 关系图表开发指南与 Vue3 组件封装
  • 杂谈-有感而发
  • LOAM的原理分析,源码解读,和运行调试
  • 接口测试和功能测试详解
  • SQL Server 2022 常见问题解答:从安装到优化的全场景指南
  • 使用 JUnit 4在 Spring 中进行单元测试的完整步骤
  • Pingora vs. Nginx vs. 其他主流代理服务器性能对比
  • Python 的 datetime 模块使用详解
  • 【Linux】详细介绍进程的概念
  • 小白自学python第一天
  • Fabric.js 设置画布背景
  • AI在Java语言的发展方向与涉及领域——一场深度的求职面试
  • Spring AI - Redis缓存对话
  • 基于Flask与Ngrok实现Pycharm本地项目公网访问:从零部署
  • 开源模型应用落地-语音合成-Spark-TTS-零样本克隆与多语言生成的突破
  • 浏览器相关知识点
  • 【AI 加持下的 Python 编程实战 2_09】DIY 拓展:从扫雷小游戏开发再探问题分解与 AI 代码调试能力(上)
  • Joint communication and state sensing under logarithmic loss
  • 中纪报刊文:新时代反腐败斗争为党赢得历史主动
  • 联手华为猛攻主流市场,上汽集团总裁:上汽不做生态孤岛
  • 冒充县领导亲戚十年骗取38箱香菇木耳,河南一男子被判拘役
  • 河南濮阳南乐县官方回应“幼儿园强制订园服”:已责令整改
  • 执政将满百日,特朗普政府面临国内“三重暴击”
  • 宁波一季度GDP为4420.5亿元,同比增长5.6%