正则表达式(Regular Expression)

正则表达式很重要,是一个合格攻城狮的必备利器,必须要学会!!!

(参考视频)10分钟快速掌握正则表达式(奇乐编程学院)icon-default.png?t=N7T8https://www.bilibili.com/video/BV1da4y1p7iZ在线测试正则表达式icon-default.png?t=N7T8https://regex101.com/vscode 搜索也是支持正则表达式的

限定符(Quantifiers)  = 符号的限制 + 字符串的限制

?

比如:used?,只表示 count('d') == 0 or count('d') == 1

①?符号的限制:d 这个字符,在整个字符串中的次数是0次或1次

②字符串的限制:d 字符前面必须是 u s e 字符

如:use...、used...

*和+的对比

*+
例子ab*c,表示 count('b') == 0 or count('b') > 0ab+ca(bc)+d
限定含义

①*符号的限制:b 这个字符,在整个字符串中出现的次数是0次或多次

②字符串的限制:这些 b 在a c字符之间

①+符号的限制:b 这个字符,在整个字符串中出现的次数是1次或多次

②字符串的限制:这些 b 在a c字符之间

①+符号的限制:bc 这个字符,在整个字符串中出现的次数是1次或多次

②字符串的限制:这些 bc 在a d字符之间

可以匹配的字符串ac、abc、abbbcabc、abbbcabcd、abcbcd

关于{...},指定匹配的次数

  • ab{6}c,表示 count('b') == 6(b出现的次数,只能是6次,不多也不少),且 b 在 a c 之间
  • ab{2,6}c,表示 2 ≤ count('b') ≤ 6,且 b 在 a c 之间
  • ab{2,}c,表示 2 ≤ count('b') ,b出现的次数上不封顶,且 b 在 a c 之间

或运算(or operator)

  • a (cat|dog),匹配 a cat,或者匹配 a dog
  • a cat|dog,匹配 a cat,或者匹配 dog

字符类(Character Classes)

[],方括号,意思是取值的字符,只能来自[]中的内容

[abc]+,表示匹配字符串中,有 a、b、c 的,至少出现1次的

[a-z]+

[a-zA-Z0-9]+,表示匹配所有的大小写英文和数字,[]里面的内容至少出现1次

^,尖号,脱字符,就是取反的意思

[^0-9]+,表示匹配数字的字符(甚至包含换行符),且至少出现1次

元字符(Meta-characters)

数字字符\d+[0-9]+匹配数字,至少1次
非数字字符\D+数字字符取反
单词字符\w+[a-zA-Z0-9_]+匹配数字、大小写英文字符、下划线
非单词字符\W+单词字符取反
空白字符\s匹配Tab(制表符)、换行符、空格
非空白字符\S非空白字符

.        英文当中的句号,代表任意字符,但不包含换行符

 ^       匹配串首,如 a^,表示,以a开头的字符串

$        匹配串尾,如 a$,表示,以a结尾的字符串

贪婪与懒惰匹配(greedy vs lazy match)

 例如,我们想要匹配 html 文本中的所有的标签,如果使用 <.+>,就会出现匹配一整行

原因是因为,.+,会尽可能匹配多的字符(贪婪)

解决方法,<.+?> ,会将正则表达式中默认的贪婪匹配(greedy match)切换为懒惰匹配(lazy match)

作业

作业1:识别 RGB 颜色字符串

例如 #0000FF,编写一个正则表达式

#[a-fA-F0-9]{6}\b

  • 以 # 字符开头
  • [a-zA-Z0-9] 表示表示匹配大小写字母、数字
  • {6}表示一共有6个字符可以匹配
  • \b 表示单词边界,例如在123a#aabbccrr,也可以匹配上

作业2:IPv4 地址匹配(比较麻烦)

第一步,写出大致范围:\d+\.\d+\.\d+\.\d+(没什么用,只是理清一下思路)

第二步,| 表示或\表示转义字符英文的句号{3} 表示重复3次

25[0-5]                     如果是25开头,那么范围只能是 250-255

2[0-4]\d                    如果是20-24开头,那么就可以是200-249

[01]?\d\d?                因为IP地址可以是单个数字

这个正则表达式 [01]?\d\d? 的含义如下:

  • [01]?:表示匹配一个可选的数字 0 或 1。[...] 表示字符集,? 表示前面的字符(或字符集)是可选的,即匹配 0 次或 1 次。
  • \d:表示匹配一个数字字符(0-9)。
  • \d?:表示匹配一个可选的数字字符(0-9)。

因此,这个正则表达式可以匹配以下内容:

  • 一个数字,可以是 0-9 中的任何一个数字。
  • 两个数字,第一个数字可以是 0 或 1,第二个数字可以是 0-9 中的任何一个数字。

下面是一些匹配的示例:

  • "1"
  • "01"
  • "12"
  • "123"
  • "9"

这个正则表达式主要用于匹配数字,可以是单个数字,也可以是两个数字,通常用于匹配数字形式的文本。

 进阶推荐

正则表达式30分钟入门教程 作者:deerchao

 Regex tutorial- A quick cheatsheet by examples (英文)作者:Jonny Fox

Regular Expressions Tutorial(英文) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/557761.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

React Hooks(常用)笔记

一、useState&#xff08;保存组件状态&#xff09; 1、基本使用 import { useState } from react;function Example() {const [initialState, setInitialState] useState(default); } useState(保存组件状态) &#xff1a;React hooks是function组件(无状态组件) &#xf…

再拓信创版图-Smartbi 与东方国信数据库完成兼容适配认证

近日&#xff0c;思迈特商业智能与数据分析软件 [简称&#xff1a;Smartbi Insight] V11与北京东方国信科技股份有限公司 &#xff08;以下简称东方国信&#xff09;CirroData-OLAP分布式数据库V2.14.1完成兼容性测试。经双方严格测试&#xff0c;两款产品能够达到通用兼容性要…

浪潮信息成功打造大规模、高性能、高可靠的单存储集群方案!

为帮助企业应对商业智能应用中面临的关于海量数据存储及实时分析的难题&#xff0c;浪潮信息日前通过技术研发&#xff0c;创新推出全球首个SAP HANA集群方案&#xff0c;该方案实现了最大可支持HANA集群服务器节点数量的翻倍&#xff0c;单存储即可支持16节点的&#xff0c;大…

图片高效批量管理,一键批量旋转150度,高效整理您的图片库

在数字化时代&#xff0c;我们的生活中充满了各种图片。从手机拍照到网络下载&#xff0c;从社交媒体到工作文档&#xff0c;图片无处不在。然而&#xff0c;随着图片数量的不断增加&#xff0c;如何高效管理这些图片&#xff0c;让它们有序、易于查找&#xff0c;成为了许多人…

Vue3从入门到实战:深度了解相关API

shallowRef 作用&#xff1a;创建一个响应式数据&#xff0c;但只对顶层属性进行响应式处理。 用法&#xff1a; let myVar shallowRef(initialValue); 特点&#xff1a;只跟踪引用值的变化&#xff0c;不关心值内部的属性变化。 shallowReactive 作用&#xff1a;创建一个…

【MySQL】表的基本约束

文章目录 1、约束类型1.1NOT NULL约束1.2UNIQUE&#xff1a;唯一约束1.3DEFAULT&#xff1a;默认值约束1.4PRIMARY KEY&#xff1a;主键约束1.5FOREIGN KEY&#xff1a;外键约束 2、表的设计2.1一对一2.2一对多2.3多对多 1、约束类型 关键字解释NOT NULL指示某列不能存储NULL值…

点赞列表查询列表

点赞列表查询列表 BlogController GetMapping("/likes/{id}") public Result queryBlogLikes(PathVariable("id") Long id) {return blogService.queryBlogLikes(id); }BlogService Override public Result queryBlogLikes(Long id) {String key BLOG_…

【C++航海王:追寻罗杰的编程之路】C++11(上)

目录 1 -> C11简介 2 -> 统一的列表初始化 2.1 -> {}初始化 2.2 -> std::initializer_list 3 -> 声明 3.1 -> auto 3.2 -> decltype 3.3 -> nullptr 1 -> C11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1)&#xff0c;使得C…

Debian

文章目录 前言一、使用root用户操作二、配置用户使用sudo命令三、添加桌面图标显示1.打开终端2.执行安装命令3.执行成功后重启4. 打开扩展&#xff0c;配置图标 四、图形化界面关闭和打开五、设置静态IP1.查询自己系统网络接口2.修改网络配置文件 总结 前言 Debian 系统在安装…

基于Springboot+Vue的Java项目-在线文档管理系统开发实战(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…

RUOYI 若依 横向菜单

保留移动端适配 小屏适配 菜单权限等 可轻松进行深度自定义菜单样式 以及分布 仅支持横向布局 如需源码 教程等 ➕ wx 技术支持 wx : 17339827025

【IEEE出版 | 中山大学主办 | 往届会后2-4个月EI检索】第五届电子通讯与人工智能学术会议(ICECAI 2024)

第五届电子通讯与人工智能国际学术会议&#xff08;ICECAI 2024&#xff09; 2024 5th International Conference on Electronic communication and Artificial Intelligence 第五届电子通讯与人工智能国际学术会议&#xff08;ICECAI 2024&#xff09;将于2024年5月31日-6月…

淘宝订单交易详情查询API是淘宝开放平台提供的接口,可以通过该接口获取淘宝订单的详细信息。

淘宝订单交易详情查询API是淘宝开放平台提供的接口&#xff0c;可以通过该接口获取淘宝订单的详细信息。通过该API&#xff0c;你可以获取订单的基本信息、商品信息、买家信息、物流信息等。 具体使用该API需要进行以下步骤&#xff1a; 在淘宝开放平台注册开发者账号&#xf…

QA测试开发工程师面试题满分问答15: 讲一讲InnoDB和MyISAM

InnoDB和MyISAM是MySQL中两种常见的存储引擎&#xff0c;它们在数据存储和处理方面有着显著的区别。让我们逐一来看一下它们的区别、原理以及适用场景。 区别&#xff1a; 事务支持&#xff1a;InnoDB是一个支持事务的存储引擎&#xff0c;而MyISAM不支持事务。事务是一种用于维…

L2-045 堆宝塔

L2-045 堆宝塔 分数 25 全屏浏览 切换布局 作者 陈越 单位 浙江大学 堆宝塔游戏是让小朋友根据抓到的彩虹圈的直径大小&#xff0c;按照从大到小的顺序堆起宝塔。但彩虹圈不一定是按照直径的大小顺序抓到的。聪明宝宝采取的策略如下&#xff1a; 首先准备两根柱子&#xff…

C++运算符重载和日期类的实现

运算符重载 参数个数与操作个数应该一致(双目操作符就是2个参数,同时参数中包括this) 不能被重载的运算符 " .* "运算符的作用 .*就是用来调用成员函数指针的 调用 1.显式调用 运算符重载可以显式调用 eg. 2.转换调用 运算符重载增强了程序的可读性 bool operato…

SpringBoot版本配置问题与端口占用

前言 ​ 今天在配置springboot项目时遇到了一些问题&#xff0c;jdk版本与springboot版本不一致&#xff0c;在使用idea的脚手架创建项目时&#xff0c;idea的下载地址是spring的官方网站&#xff0c;这导致所下载的版本都是比较高的&#xff0c;而我们使用最多的jdk版本是jdk…

使用不锈钢微型导轨的优势!

微型导轨是一种专门用于在紧凑空间内执行高精度的机器运动控制的导轨设备。其特点是尺寸小、精确度高、刚性好、平稳性好以及使用寿命长。微型导轨的材质种类多样&#xff0c;一般包括钢、不锈钢、铝合金等。目前来说&#xff0c;不锈钢材质的使用率最为频繁&#xff0c;那么使…

Vue3从入门到实践:深度了解新组件

1.Teleport 概念&#xff1a;Teleport&#xff08;传送门&#xff09;是一个新的特性&#xff0c;用于在DOM中的任意位置渲染组件。它允许你将组件的内容渲染到DOM中的另一个位置&#xff0c;而不受组件层次结构的限制。 下面举出例子解释&#xff1a; 1.新建App.vue文件作…

数据结构—单链表

1、链表的概念及结构 1.1链表的概念 链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;但在逻辑上确是连续、顺序的&#xff0c;而数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 1.2链表的结构 如下图&#xff1a; 逻辑上的链表&#xff0c;pList是指…
最新文章