正则表达式(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)

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

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

相关文章

算法4:x的平方根

在不使用 sqrt(x)函数的情况下&#xff0c;得到x的平方根的整数部分 重点考察:二分法、牛顿迭代 暴力法&#xff1a; public class Test4 {public static void main(String[] args){int a 80;for (int i1;i*i<a;i){if(i*i8){System.out.println(i);}if(i*i<a &&am…

C++进阶学习:C++11特性

C11是C语言的一个重要版本&#xff0c;引入了许多新的特性和改进。接下来进行这些新特性的学习&#xff01; 1.nullptr的引入 在C语言中&#xff0c;NULL表示空地址。而C中NULL被定义为字面量0。 这里我们通过打印x的类型名&#xff0c;发现NULL的类型名是int&#xff0c;而对…

React构建组件的方式有哪些,有什么区别?

React构建组件的方式有哪些&#xff0c;有什么区别&#xff1f; 1. 函数组件1.1 特点 2. 类组件2.1特点 3. 高阶组件3.1特点 4. 自定义Hook4.1特点 React 组件是构成React应用的基本单元。在React中&#xff0c;有几种不同的方式可以创建组件&#xff0c;每种方式都有其特定的用…

算法与数据结构要点速学——时间复杂度(大 O)

时间复杂度 (大 O) 首先&#xff0c;我们来谈谈常用操作的时间复杂度&#xff0c;按数据结构/算法划分。然后&#xff0c;我们将讨论给定输入大小的合理复杂性。 数组&#xff08;动态数组/列表&#xff09; 规定 n arr.length, 在结尾添加或删除元素&#xff1a;O(1)从任意…

【C++】力扣OJ题:找出只出现一次的数字

Hello everybody!这是我第一次写关于OJ题目的博客&#xff0c;因为正好学到完了C的STL库&#xff0c;就顺手刷了一些OJ题。 我今天要介绍的题目虽然是力扣上的简单题&#xff0c;但思想很巧妙&#xff0c;我觉得有必要和大家分享一下&#xff01; 1.题目 2.代码 class Solut…

数据中心配电解决方案及项目案例

安科瑞电气股份有限公司 祁洁 15000363176 一、方案背景 为了确保数据中心供电的可靠性&#xff0c;通常会将数据中心的配电关键组件进行冗余设计&#xff0c;关键组件&#xff08;例如 UPS 单元、冷却系统和备用发电机&#xff09;被复制。同时将这些配电设备纳入到监控系…

视频批量高效剪辑,支持将视频文件转换为音频文件,轻松掌握视频格式

在数字化时代&#xff0c;视频内容日益丰富&#xff0c;管理和编辑这些视频变得愈发重要。然而&#xff0c;传统的视频剪辑软件往往操作复杂&#xff0c;难以满足高效批量处理的需求。现在&#xff0c;一款全新的视频批量剪辑神器应运而生&#xff0c;它支持将视频文件一键转换…

Day01-环境准备与镜像案例

Day01-环境准备与镜像案例 1. 容器架构1.1 Iaas Paas Saas (了解)1.2 什么是容器1.3 容器vs虚拟机1.4 Docker极速上手指南1&#xff09;配置docker源(用于安装docker)2&#xff09;docker下载镜像加速的配置3&#xff09;自动补全 1.5 Docker C/S架构1.6 Docker的镜像管理1&…

Java链式编程

一&#xff1a;链式编程 可以简化编程。代码简洁。 定义&#xff1a; 链式编程&#xff1a;顾名思义&#xff0c;链子嘛。它是一种编程范式&#xff0c;它允许将多个函数或操作连接在一起&#xff0c;形成一个链条&#xff0c;以执行复杂的操作。 优点&#xff1a; 编程性…

【Gradio】Could not create share link

【Gradio】Could not create share link 写在最前面在服务器端一直运行一个Python脚本解决&#xff1a;下载frpc_linux_amd64文件&#xff0c;并添加权限原理 完整过程&#xff1a;先找gradio库位置&#xff0c;然后发现缺失文件1. 打开终端2. 使用 find 命令查找 gradio 目录3…

vue学习日记22:非父子通信(拓展)-provideinject

一、概念 二、实践 代码 App <template><div class"app">我是APP组件<button click"change">修改数据</button><SonA></SonA><SonB></SonB></div> </template><script> import SonA …

Java SDK 使用示例

我们使用同样的 Maven 模板去创建 use-test-sdk 项目&#xff0c;不同的是&#xff0c;我们需要在 use-tset-sdk 下创建一个 lib 文件夹&#xff0c;用来存放 test-sdk.jar 文件。 我们将 test-sdk.jar 拖放到 use-test-sdk/lib 下&#xff0c;然后我们就可以编写代码了&#…

VRTK(Virtual Reality Toolkit)深入介绍

VRTK是一个为Unity引擎设计的开源虚拟现实&#xff08;VR&#xff09;开发框架&#xff0c;旨在简化和加速VR应用的开发过程。这个工具包包含了一系列的模块和预设&#xff0c;使得开发者可以快速集成标准的VR功能&#xff0c;如物体交互、环境导航、用户界面管理等。下面将对V…

每日OJ题_BFS解决最短路④_力扣675. 为高尔夫比赛砍树

目录 力扣675. 为高尔夫比赛砍树 解析代码 力扣675. 为高尔夫比赛砍树 675. 为高尔夫比赛砍树 难度 困难 你被请来给一个要举办高尔夫比赛的树林砍树。树林由一个 m x n 的矩阵表示&#xff0c; 在这个矩阵中&#xff1a; 0 表示障碍&#xff0c;无法触碰1 表示地面&…

知道XRD标准品PDF卡片号,如何直接导出标准物质数据,简单快速一分钟完成(附jade下载安装方法)

知道XRD标准品PDF卡片号&#xff0c;如何直接导出标准物质数据&#xff08;附jade下载安装方法&#xff09; 网上找到的方法都是先检索再导出&#xff0c;我的样品根本检索不到&#xff0c;但是根据参考文献知道了自己的pdf卡片号&#xff0c;可通过jade直接导出数据 1.请安装…

【Linux】磁盘扩容到根目录逻辑卷(LVM)

目录 一、物理卷和逻辑卷 1.物理卷和逻辑卷的区别 2.在Linux系统中查看所有物理卷的信息 3.在Linux系统中查看所有逻辑卷的信息 二、文件系统 三、实操-对root&#xff08;/&#xff09;目录进行扩容 1.使用lsblk命令查看新加入的磁盘信息 2.fdisk -l命令查看系统中磁盘…

openjudge_2.5基本算法之搜索_1792:迷宫

题目 1792:迷宫 查看提交统计提问 总时间限制: 3000ms 内存限制: 65536kB 描述 一天Extense在森林里探险的时候不小心走入了一个迷宫&#xff0c;迷宫可以看成是由n * n的格点组成&#xff0c;每个格点只有2种状态&#xff0c;.和#&#xff0c;前者表示可以通行后者表示不能通…

git报错

这里写自定义目录标题 git报错Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 有一个原因就是在github上设置对应密钥时&#xff0c;有一个key获取应该设置为…

记录一下联想连接wifi成功但是显示无internet

问题描述 连接热点的话是没有问题的&#xff0c;但是一到校园网就总是掉链子。 目前可以解决的方法 基本上每次出问题都是这几个方法轮询&#xff0c;总有一次可以解决&#xff08;但是没找到比较好的永久解决的法子 重启网络适配器先连接热点再关掉练校园网重启电脑清除dn…

算法刷题记录 Day47

算法刷题记录 Day47 Date: 2024.04.15 lc 115. 不同的子序列 class Solution { private:const int MOD 1e9 7; public:int numDistinct(string s, string t) {// t为模板串&#xff0c;s为原串;int m t.size();int n s.size();if(m > n) return 0;// dp[i][j] 表示…