[学习笔记]Java正则表达式

正则表达式

正则表达式定义了字符串的模式,可以用于搜索、编辑或处理文本;

正则表达式使用字符串描述规则,并用于匹配字符串;

一个正则表达式其实就是一个描述规则的字符串,被正则表达式引擎用于匹配文本;

正则表达式是一套规则,可以用于任何语言;

Java提供内置的java.util.regex包用于支持正则表达式;

若正则表达式含有特殊字符,则需要用 \ 对其进行转义,在Java当中的字符串中 \ 要用 \来表示;

匹配规则

正则表达式按照从左到右的顺序进行匹配;

匹配任意字符

在实际应用时,正则表达式用于进行模糊匹配,精确匹配由String.equals()就可以完成;

正则表达式语法

单个字符匹配规则

正则表达式 匹配字符 单个字符,如A 匹配指定字符,如A \u #### 匹配指定的Unicode字符 . 匹配除\r和\n之外的任意一个字符 \d 匹配任意一个数字,0-9 \w 匹配任意一个字母、数字或下划线 \s 匹配空格或Tab键 \D 匹配非数字 \W 匹配非\w \S 匹配非空格或Tab键(\t) \f 匹配换页符 \n 匹配换行符 \r 匹配回车符 \t 匹配垂直制表符

匹配多个字符

正则表达式 匹配字符 A* 匹配任意个数的字符 A+ 至少匹配一个字符 A? 匹配0个或1个字符 A{n} 匹配指定的n个字符 A{m,n} 匹配指定范围内个数的字符 A{n,} 至少匹配n个字符

复杂的匹配规则

在其他语言中,要在正则表达式中插入一个反斜杠 \, 只需要用 \ 表示即可,而在Java中,需要两个反斜杠 \ 才能表示一个反斜杠 \;

根据Java语言规范,Java源代码的字符串中的反斜杠被解释为Unicode转义或其他字符转义,因此必须在字符串字面值中使用两个反斜杠,表示正则表达式受到保护,不被Java编译器解释;

正则表达式 匹配字符 \ 用于转义字符,将下一个字符标记为特殊字符、文本等 ^ 用正则表达式进行多行匹配时,^ 表示字符串开始的位置 $ 用正则表达式进行多行匹配时, $ 表示字符串结束的位置 ? 在正则表达式的规则后加上?表示采用非贪婪匹配模式(相比于默认的贪婪匹配模式尽可能长的匹配字符串,非贪婪模式会尽可能短的匹配字符串) A|B 用|连接两个正则表达式,表示A或B [ABC] 将所有符合条件的字符都列在方括号内组成一个字符集,匹配任何一个在字符集当中的字符,即匹配A或B或C [^ABC] 将^放在字符集的开头表示一个反向字符集,即匹配A或B或C以外的字符 [a-z] 由于在字符集当中列出所有要匹配的字符比较麻烦,可以使用字符范围的形式来对字符集进行简化 [^a-z] 为了简化反字符集,也可以使用指定范围字符

分组匹配

在正则表达式中,可以使用括号 (pattern)将子规则括起来表示匹配pattern及其子表达式;

括号还可以用于进行分组匹配,把要匹配的规则用括号进行分组可以方便后续对子字符串的提取;

Original: https://www.cnblogs.com/cloudyzcy/p/16315391.html
Author: 糖小豆
Title: [学习笔记]Java正则表达式

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/713015/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 二进制状态压缩

    二进制状态压缩 取出整数n在二进制表示下的第k位: (n>>k)&1 取出整数n在二进制下的第0~k-1位 n&((1<<k)-1) &lt…

    技术杂谈 2023年7月11日
    079
  • 混沌工程之混沌测试平台

    https://www.jianshu.com/p/4bd4f88e24e4 一款用于测试kubernetes环境的工具。通过人为地在集群中注入故障来检测集群对故障的处理以及恢复能…

    技术杂谈 2023年5月31日
    090
  • 分布式理论—-CAP理论与Base理论

    CAP 理论 【1】CAP 理论指出对于一个分布式计算系统来说,不可能同时满足以下三点: 1)一致性:在分布式环境中,一致性是指数据在多个副本之间是否能够保持一致的特性,等同于所有…

    技术杂谈 2023年7月23日
    089
  • 知识点复习(持续更新版)

    高等数学 线性代数 如何判断向量组的线性相关性? 由线性相关定义去判断 令向量组的线性组合为零,研究系数的取值情况,线性组合为零当且仅当系数皆为零,则该向量组线性无关;若存在不全为…

    技术杂谈 2023年7月23日
    091
  • MySQL-sql_mode=only_full_group_by解决方式

    报错问题: SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and …

    技术杂谈 2023年6月21日
    0107
  • 设计恰如其分的架构

    远在2009年,Martin Fowler与Rebecca Parsons在QCon SF做了一次题为Agilists and Architects: Allies not Adv…

    技术杂谈 2023年5月31日
    0100
  • Java中如何通过try优雅地释放资源?

    时间紧迫,长话短说,今天,小明给大家同步一个知识点,使用 try-with-resources来优雅地关闭资源。 1. 背景 其实,在JDK 7就已经引入了对 try-with-r…

    技术杂谈 2023年7月24日
    075
  • idea创建servlet简单方法

    1、CreateNewProject->JavaEE->WebApplication->项目命名->Finish。 2、项目创建后初始目录为:。 3、web…

    技术杂谈 2023年5月31日
    0103
  • 模型

    字段选项 null 如果设置为 True,当该字段为空时,Django 会将数据库中该字段设置为 NULL。默认为 False 。 blank 如果设置为 True,该字段允许为空…

    技术杂谈 2023年7月23日
    070
  • 音频之时域&频域

    一. 时域 & 频域 时域和频域是音频应用中最常用的两个概念,也是衡量音频特征的两个维度概念。 时域图如下: 横轴是时间,纵轴是声音强度,可知时域图是从时间维度来衡量一段音…

    技术杂谈 2023年5月31日
    093
  • PYTORCH: 60分钟 | 训练一个分类器

    你已经知道怎样定义神经网络,计算损失和更新网络权重。现在你可能会想, 那么,数据呢? 通常,当你需要解决有关图像、文本或音频数据的问题,你可以使用python标准库加载数据并转换为…

    技术杂谈 2023年7月25日
    088
  • Failed to process import candidates for configuration class [com.simple…..]

    主要原因: 是因为自己定制的starter在打包时(package)用了spring-boot-maven-plugin,即在你的定制starter工程的pom.xml中有如下配置…

    技术杂谈 2023年5月30日
    0111
  • 从第三次技术革命看企业应用三大开发趋势

    有史以来的三次技术革命都无比波澜壮阔,不仅改变了人类文明的发展历程,也改变了我们每一个人的生活。 纺织革命是第一次工业革命的起点,以蒸汽机的发明与使用为标志,如马克思所言,&#82…

    技术杂谈 2023年5月31日
    098
  • 【笔试】1、强迫卖家

    小明是个强迫症卖家,有10000台设备,卖的均价要求最接近D元,输出卖出的台数N,总售价M 输入 0首先想得是暴力解答然后是二分查找,寻找卖出多少台才符合要求,但是一直找不到符合要…

    技术杂谈 2023年7月24日
    065
  • Jedis操作hash和Jedis操作List

    Jedis操作hash和Jedis操作List 哈希类型 hash :map个时间哦 hset hget hgetAll package com.ailyt.jiedis.test…

    技术杂谈 2023年6月21日
    0109
  • 优秀程序猿因何而优秀?

    这些年我曾和非常多程序猿一起工作。他们之中的一些人非常厉害。而还有一些人显得平凡。不久前由于和一些技术非常熟练的程序猿工作感觉非常愉快,我花了一些时间在考虑我佩服他们什么呢?什么原…

    技术杂谈 2023年5月31日
    089
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球