正则表达式(Regular Expression)

news2024/12/23 15:19:13

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

(参考视频)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.coloradmin.cn/o/1607947.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

07.QT信号和槽-2

一、自定义信号和槽 在Qt中&#xff0c;允许⾃定义信号的发送⽅以及接收⽅&#xff0c;即可以⾃定义信号函数和槽函数。但是对于⾃定义的信号函数和槽函数有⼀定的书写规范。 1.基本语法 1.1 自定义信号 &#xff08;1&#xff09;⾃定义信号函数必须写到"signals"…

GCC/G++详解

文章目录 GCC/G编译gcc是如何完成的预处理编译汇编链接 编译流程 GCC/G 编译 C语言源文件可以使用gcc和g编译&#xff08;优先选择gcc&#xff09; gcc test.c -o mybin / gcc -o mybin test.c 基于test.c文件生成可执行程序mybing tes.c -o mybin / g -o mybin test.c 基于te…

【C语言】多字节字符、宽字符(涉及字符集和编码)

字符集、编码&#xff1a; 字符集&#xff1a;一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称&#xff0c;包括各国家文字、标点符号、图形符号、数字等。例如&#xff1a;ASCII、Unicode、GB2312、GBK、GB18030、BIG5(繁体中文) ... 编码方式&#xff1a;符号…

在H5开发App应用程序过程中的一些常见问题

哈喽&#xff0c;大家好呀&#xff0c;淼淼又来和大家见面啦&#xff0c;H5开发是一种可以跨平台、跨设备、且可以在各种设备上运行&#xff0c;无需安装额外的应用程序。最近有许多小伙伴跟我聊到在h5开发App应用程序的过程中遇到了一些问题&#xff0c;今天我们就这些问题来做…

【数学建模】最优旅游城市的选择问题:层次分析模型(含MATLAB代码)

层次分析法&#xff08;The analytic hierarachy process&#xff0c;简称AHP&#xff09;是一种常用的决策分析方法&#xff0c;其基本思路是将复杂问题分解为多个组成部分&#xff0c;然后对这些部分进行逐一评估和比较&#xff0c;最后得出最优解决方案。&#xff08;例如&a…

【Linux】创建IDEA桌面快捷方式

Linux系统安装IDEA保姆级教程_linux安装idea-CSDN博客 在Ubuntu上安装Intellij IDEA并创建桌面快捷方式 - 极客子羽 - 博客园 (cnblogs.com) 下载安装包解压到指定目录 /opt/softWare 进入bin目录&#xff0c;ll查看 桌面打开终端&#xff0c;创建文件 touch idea.desktop s…

[大模型]Qwen-7B-hat Transformers 部署调用

Qwen-7B-hat Transformers 部署调用 环境准备 在autodl平台中租一个3090等24G显存的显卡机器&#xff0c;如下图所示镜像选择PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8 接下来打开刚刚租用服务器的JupyterLab&#xff0c;并且打开其中的终端开始环境配置、模型下…

C++初阶学习第一弹——C++入门(上)

前言&#xff1a; 很高兴&#xff0c;从今天开始&#xff0c;我们就要步入C的学习了&#xff0c;在这之前我们已经对C语言有了不错的了解&#xff0c;对数据结构也有了一些自己的认识&#xff0c;今天开始&#xff0c;我们就进入这个新的主题的学习——C 目录 一、C的发展即其特…

Redis教程——数据类型(有序集合、位图)

上篇文章我们学习了Redis教程——数据类型&#xff08;哈希、集合&#xff09;&#xff0c;这篇文章学习Redis教程——数据类型&#xff08;有序集合、位图&#xff09; 有序集合ZSet 有序集合和集合都是string类型的无序集合&#xff0c;其数据是唯一&#xff0c;都是通过哈…

华为路由器基于接口限速

一、背景 ISP与企业内网通过华为路由器接入Internet时,当大量流量进入路由器时,可能会因为带宽不足产生拥塞,导致丢包,严重影响用户上网体验。对于此需要对网络流量进行限制,其方式通常有防火墙带宽策略、路由器基于接口限速等。 二、华为路由器基于接口限速方式 在路由…

代码随想录算法训练营第四十四天| LeetCode70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数

一、LeetCode 70. 爬楼梯 &#xff08;进阶&#xff09; 题目链接/文章讲解/视频讲解&#xff1a;https://programmercarl.com/0070.%E7%88%AC%E6%A5%BC%E6%A2%AF%E5%AE%8C%E5%85%A8%E8%83%8C%E5%8C%85%E7%89%88%E6%9C%AC.html 状态&#xff1a;已解决 1.思路 这道题跟70.爬楼…

如何在深度学习中调用CAME

1、介绍 CAME&#xff1a;一种以置信度为导向的策略&#xff0c;以减少现有内存高效优化器的不稳定性。基于此策略&#xff0c;我们提出CAME同时实现两个目标:传统自适应方法的快速收敛和内存高效方法的低内存使用。大量的实验证明了CAME在各种NLP任务(如BERT和GPT-2训练)中的…

【python】直接在python3下安装 jupyter notebook,以及处理安装报错,启动不了问题

目录 问题&#xff1a; 1 先做准备&#xff0c;查看环境 1.1 先看python3 和pip &#xff0c;以及查看是否有 juypter 1.2 开始安装 1.3 安装完成后得到警告和报错 2 处理安装的报错问题 2.1 网上有说是因为 pip 自身需要更新&#xff0c;更新之 2.1.1 更新pip 2.1.…

vue快速入门(三十二)局部与全局注册组件的步骤

注释很详细&#xff0c;直接上代码 上一篇 新增内容 局部注册组件全局注册组件 文件结构 源码 MyHeader.vue <!-- 用于测试全局注册组件 --> <template><div><h1>又可以愉快的学习啦</h1></div> </template><script>export d…

开启Three.js之旅(会持续完善)

文章目录 Three.js必备构建项目场景Scene相机CameraPerspectiveCamera 渲染器WebGLRendererCSS3DRenderer 灯光LightAmbientLightDirectionalLight 平行光PointLight 加载器CacheFileLoaderLoaderGLTFLoaderRGBELoaderTextureLoader 材质MetarialMeshBasicMaterialMeshLambertM…

武汉星起航:上海股权中心成功挂牌,创始人张振邦领航跨境新纪元

在金秋十月的尾声&#xff0c;上海股权托管交易中心迎来了一场备受瞩目的盛事。2023年10月30日&#xff0c;武汉星起航电子商务有限公司成功挂牌展示&#xff0c;正式登录资本市场&#xff0c;开启了一段崭新的发展篇章。这一里程碑式的跨越&#xff0c;不仅标志着武汉星起航在…

MySQL基础-----约束详解

目录 一. 概述: 二.约束演示&#xff1a; 三.外键约束&#xff1a; 3.1介绍&#xff1a; 3.2外键约束语法&#xff1a; 3.3删除&#xff0c;更新行为&#xff1a; 一. 概述: &#x1f9d0;&#x1f9d0;概念&#xff1a;约束是作用于表中字段上的规则&#xff0c;用于限制…

【机器学习】数据变换---小波变换特征提取及应用案列介绍

引言 在机器学习领域&#xff0c;数据变换是一种常见且重要的预处理步骤。通过对原始数据进行变换&#xff0c;我们可以提取出更有意义的特征&#xff0c;提高模型的性能。在众多数据变换方法中&#xff0c;小波变换是一种非常有效的方法&#xff0c;尤其适用于处理非平稳信号和…

会话seesion的使用,结合ddddocr识别简单验证码的登录实现。

古诗文网登录代码&#xff1a; # 古诗文网登录实战 # 验证码链接:https://so.gushiwen.cn/RandCode.ashx # 变动参数链接:__VIEWSTATE所在的地址:https://so.gushiwen.cn/user/login.aspx?fromhttp://so.gushiwen.cn/user/collect.aspx # 登录接口链接:https://so.gushiwen.c…

npx\pnpm 镜像过期解决方法

. // 1. 清空缓存 npm cache clean --force // 2. 关闭SSL验证 npm config set strict-ssl false // 3. 安装 到这里就可以正常使用npm命令安装需要的工具了。如( npm install -g cnpm )