26、正则表达式
目录
一. 匹配字符
.:匹配除换行符外的任意单个字符。
二. 位置锚点
^:匹配输入字符串的开始位置。
$:匹配输入字符串的结束位置。
\b:匹配单词边界。
\B:匹配非单词边界。
三. 重复限定符
*:匹配前面的字符或子表达式零次或多次(贪婪模式)。
+:匹配前面的字符或子表达式一次或多次(贪婪模式)。
?:匹配前面的字符或子表达式零次或一次(懒惰模式)。
{n}:匹配前面的字符或子表达式恰好n次。
{n,}:匹配前面的字符或子表达式至少n次。
{n,m}:匹配前面的字符或子表达式至少n次,但不超过m次。
四. 分支条件
|:逻辑“或”,匹配两个或多个选项中的一个。
五. 字符类
[abc]:匹配方括号内的任意一个字符。
[^abc]:匹配不在方括号内的任意一个字符。
\d:匹配任何数字字符。
\D:匹配任何非数字字符。
\s:匹配任何空白字符。
\S:匹配任何非空白字符。
\w:匹配任何字母数字字符及下划线。
\W:匹配任何非字母数字字符及非下划线。
六. 转义字符
\:转义字符,用于匹配元字符本身或特殊序列。
七. 特殊序列
\t:匹配制表符(Tab)。
\n:匹配换行符。
\r:匹配回车符。
\f:匹配换页符。
\v:匹配垂直制表符。
八. 分组和引用
():创建捕获组,用于分组和提取匹配的文本。
(?:...):创建非捕获组,用于分组但不捕获匹配的文本。
\数字:后向引用,引用之前捕获组匹配的文本。配合捕获组使用
九. 断言
(?=...):正向先行断言,匹配后面跟着特定模式的字符串。
(?!...):负向先行断言,匹配后面不跟着特定模式的字符串。
(?<=...):正向后行断言,匹配前面有特定模式的字符串。
(?
十. Unicode 和其他属性
十一. 递归
十二.重复模式
正则表达式(Regular Expression,简称Regex)是一种用于字符串搜索和操作的强大工具,它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。它是一套独立的规范,各类编程语言都会提供一些API,支持正则表达式。正则表达式由普通字符(例如,a-z、A-Z、0-9)和特殊字符(称为“元字符”)组成。以下是一些常用的元字符及其含义:
当然,以下是正则表达式元字符和特性的分类,每个都附有一个简单的案例和清晰的输出格式说明:
一. 匹配字符
.:匹配除换行符外的任意单个字符。
示例:
a.t匹配 "act"、"a1t" 或 "a!t"。
二. 位置锚点
^:匹配输入字符串的开始位置。
示例:
^Hello匹配以 "Hello" 开头的句子。
-
$:匹配输入字符串的结束位置。
示例:
World$匹配以 "World" 结尾的句子。
\b:匹配单词边界。
示例:
\bworld这个正则表达式匹配的是 "world" 作为一个完整单词出现的情况
-
\B:匹配非单词边界。
示例:
\Bworld \B匹配 "helloworld" 中的 "world"。
三. 重复限定符
*:匹配前面的字符或子表达式零次或多次(贪婪模式)。
示例:
a*匹配 "a"、"aa" 或 "aaa"。
+:匹配前面的字符或子表达式一次或多次(贪婪模式)。
示例:
a+匹配 "a"、"aa" 或 "aaa",但不匹配空字符串。
?:匹配前面的字符或子表达式零次或一次(懒惰模式)。
示例:
a?匹配 "a" 或空字符串。
{n}:匹配前面的字符或子表达式恰好n次。
示例:
a{3}匹配 "aaa"。
{n,}:匹配前面的字符或子表达式至少n次。
示例:
a{3,}匹配 "aaa"、"aaaa" 或 "aaaaa"。
{n,m}:匹配前面的字符或子表达式至少n次,但不超过m次。
示例:
a{2,3}匹配 "aa" 或 "aaa"。
四. 分支条件
|:逻辑“或”,匹配两个或多个选项中的一个。
示例:
cat|dog匹配 "I have a cat" 或 "I have a dog"。
五. 字符类
[abc]:匹配方括号内的任意一个字符。
示例:
[abc]匹配 "a"、"b" 或 "c"。
[^abc]:匹配不在方括号内的任意一个字符。
示例:
[^abc]匹配 "d"、"e" 或 "f"。
\d:匹配任何数字字符。
示例:
\d匹配 "1"、"2" 或 "3"。
\D:匹配任何非数字字符。
示例:
\D匹配 "a"、"b" 或 "c"。
\s:匹配任何空白字符。
示例:
\s匹配空格、制表符或换行符。
\S:匹配任何非空白字符。
示例:
\S匹配 英文字母。
-
\w:匹配任何字母数字字符及下划线。
示例:
\w匹配 "a"、"1" 或 "_"。
-
\W:匹配任何非字母数字字符及非下划线。
示例:
\W匹配空格或 "!"。
六. 转义字符
\:转义字符,用于匹配元字符本身或特殊序列。
示例:
\.匹配实际的点字符。
七. 特殊序列
\t:匹配制表符(Tab)。
示例:
\t匹配制表符。
\n:匹配换行符。
示例:
\n匹配换行符。
\r:匹配回车符。
示例:
\r匹配回车符。(回车符:将光标移回行首,不换行。换行符:将光标移至下一行开头,换行。)Windows回车换行符都是enter键,单独敲出太麻烦,算了
\f:匹配换页符。
示例:
\f匹配换页符。通常用于打印机或文本处理软件中,以指示开始新的一页。在大多数文本编辑器或命令行界面中,换页符不是通过键盘直接输入的。没法演示。
\v:匹配垂直制表符。
示例:
\v匹配垂直制表符。垂直制表符通常不通过键盘直接输入,因为它主要用于老式的电传打字机和一些特殊的文本处理场景。
八. 分组和引用
():创建捕获组,用于分组和提取匹配的文本。
示例:
(abc)匹配 "abc" 并捕获它。
(?:...):创建非捕获组,用于分组但不捕获匹配的文本。
示例:
(?:abc)匹配 "abc" 但不捕获它。说明:在正则表达式中使用它来对子表达式进行分组,但是不捕获匹配的结果。这意味着匹配到的内容不会像捕获组那样被存储起来,以便后续使用。
\数字:后向引用,引用之前捕获组匹配的文本。配合捕获组使用
示例:
(abc)\1匹配 "abcabc"。匹配文本abc出现两次,并且中间没有任何其他符号。
九. 断言
(?=...):正向先行断言,匹配后面跟着特定模式的字符串。
示例:
abc(?=def)匹配 "abc" 后面跟着 "def"。
(?!...):负向先行断言,匹配后面不跟着特定模式的字符串。
示例:
abc(?!def)匹配 "abc" 后面不跟着 "def"。
-
(?<=...):正向后行断言,匹配前面有特定模式的字符串。
示例:
(?<=def)abc匹配 "abc" 前面有 "def"。
(?<!...):负向后行断言,匹配前面没有特定模式的字符串。
示例:
(?<!def)abc匹配 "abc" 前面没有 "def"。
十. Unicode 和其他属性
-
\p{...}:匹配具有特定 Unicode 属性的字符。
示例:
\p{L}匹配任何字母很多正则表达式引擎不支持 Unicode 属性转义或没有启用Unicode模式,暂时没测试。
十一. 递归
-
(?R):递归匹配,正则表达式可以引用自身。
示例:
(?R)可以递归地匹配重复的模式。正则表达式引擎不支持递归模式,暂时没测试。
十二.重复模式
-
贪婪模式:对于重复限定符,默认情况下会匹配尽可能多的字符,这叫做贪婪模式。
-
懒惰模式:在重复限定符之后加上
?,表示匹配尽可能少的字符,这叫做懒惰模式。
相关文章:
26、正则表达式
目录 一. 匹配字符 .:匹配除换行符外的任意单个字符。 二. 位置锚点 ^:匹配输入字符串的开始位置。 $:匹配输入字符串的结束位置。 \b:匹配单词边界。 \B:匹配非单词边界。 三. 重复限定符 *:匹配…...
SpringBoot使用MockMVC通过http请求controller控制器调用测试
说明 在Spring Boot中编写测试控制器调用是一个常见的需求,通常使用Spring的测试框架来完成。Spring Boot提供了多种方式来测试控制器,包括使用MockMvc进行模拟HTTP请求和响应的测试。 基本示例 1. 创建Spring Boot项目 首先,确保你已经创建了一个Spring Boot项目。如果…...
【Unity3D】Unity混淆工具Obfuscator使用
目录 一、导入工具 二、各种混淆形式介绍 2.1 程序集混淆 2.2 命名空间混淆 2.3 类混淆 2.4 函数混淆 2.5 参数混淆 2.6 字段混淆 2.7 属性混淆 2.8 事件混淆 三、安全混淆 四、兼容性处理 4.1 动画方法兼容 4.2 GUI方法兼容 4.3 协程方法兼容 五、选项 5.1 调…...
C语言语法基础学习—动态分配空间(new和malloc的用法及区别)
前言 在 C 语言中,动态内存分配主要是通过 malloc() 和 free() 函数来完成的。而在 C 中是使用new和delete关键字,来动态分配内存。 虽然 C 语言没有 new,但 malloc() 和 new 在内存分配上的作用是相似的。下面我们详细解释 malloc() 和 ne…...
QT:控件属性及常用控件(3)-----输入类控件(正则表达式)
输入类控件既可以进行显示,也能让用户输入一些内容! 文章目录 1.Line Edit1.1 用户输入个人信息1.2 基于正则表达式的文本限制1.3 验证两次输入的密码是否一致1.4 让输入的密码可以被查看 2.Text Edit2.1 输入和显示同步2.1 其他信号出发情况 3.ComboBox…...
Hive SQL 执行计划解析
Hive SQL 执行计划解析 一、 explain用法 1. SQL 查询 EXPLAIN SELECT SUM(view_dsp) AS view_sum FROM ads.table_a WHERE p_day 2025-01-06;2. 执行计划 STAGE DEPENDENCIES:Stage-1 is a root stageStage-0 depends on stages: Stage-1STAGE PLANS:Stage: Stage-1Map …...
热更新杂乱记
热更新主要有一个文件的MD5值的比对过程,期间遇到2个问题,解决起来花费了一点时间 1. png 和 plist 生成zip的时候再生成MD5值会发生变动。 这个问题解决起来有2种方案: (1).第一个方案是将 png和plist的文件时间改…...
博客搭建 — GitHub Pages 部署
关于 GitHub Pages GitHub Pages 是一项静态站点托管服务,它直接从 GitHub 上的仓库获取 HTML、CSS 和 JavaScript 文件,通过构建过程运行文件,然后发布网站。 本文最终效果是搭建出一个域名为 https://<user>.github.io 的网站 创建…...
翻译:How do I reset my FPGA?
文章目录 背景翻译:How do I reset my FPGA?1、Understanding the flip-flop reset behavior2、Reset methodology3、Use appropriate resets to maximize utilization4、Many options5、About the author 背景 在写博客《复位信号的同步与释放(同步复…...
Linux 进程环境变量:深入理解与实践指南
🌟 快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。🌟 🚩用通俗易懂且不失专业性的文字,讲解计算机领域那些看似枯燥的知识点🚩 在 Linux 系统里…...
Linux探秘坊-------5.git
1.git介绍 1.版本控制器 为了能够更⽅便我们管理这些不同版本的⽂件,便有了版本控制器。所谓的版本控制器,就是能让你了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统&am…...
Linux中的几个基本指令(二)
文章目录 1、cp指令例一:例二:例三:例四:例五: 2、mv 指令例一:例二: 3、cat指令例一: 4、tac指令5、which指令6、date指令时间戳:7、zip指令 今天我们继续学习Linux下的…...
Java入门笔记(1)
引言 在计算机编程的广袤宇宙中,Java无疑是一颗格外耀眼的恒星。那么,Java究竟是什么呢? Java是美国Sun公司(Stanford University Network)在1995年推出的一门计算机高级编程语言。曾经辉煌的Sun公司在2009年被Oracle&…...
设计模式的艺术-开闭原则
原则使用频率图(仅供参考) 1.如何理解开闭原则 简单来说,开闭原则指的是 “对扩展开放,对修改关闭”。 当软件系统需要增加新的功能时,应该通过扩展现有代码的方式来实现,而不是去修改已有的代码。 例如我…...
【C语言系列】深入理解指针(3)
深入理解指针(3) 一、字符指针变量二、数组指针变量2.1数组指针变量是什么?2.2数组指针变量怎么初始化? 三、二维数组传参的本质四、函数指针变量4.1函数指针变量的创建4.2函数指针变量的使用4.3两段有趣的代码4.4 typedef关键字 …...
three.js+WebGL踩坑经验合集:写在前面的话
笔者从2023年初开始参与一个基于three.js引擎的web项目的开发工作。本打算2024年春节就把期间踩过的坑写到博客上分享给大家,然而哪怕本专栏的各种构思和内容已经在笔者的脑海里翻滚了一年,得了严重拖延症患者的我还是一直拖到了现在,实在惭愧…...
利用Linux的工作队列(Workqueue)实现中断下半部的处理
本文代码在哪个基础上修改而成? 本文是在博文 https://blog.csdn.net/wenhao_ir/article/details/145228617 的代码基础上修改而成。 关于工作队列(Workqueue)的概念 工作队列(Workqueue)可以用于实现Linux的中断下半部的,之前在博文 https://blog.cs…...
LabVIEW处理复杂系统和数据处理
LabVIEW 是一个图形化编程平台,广泛应用于自动化控制、数据采集、信号处理、仪器控制等复杂系统的开发。它的图形化界面使得开发人员能够直观地设计系统和算法,尤其适合处理需要实时数据分析、高精度控制和复杂硬件集成的应用场景。LabVIEW 提供丰富的库…...
spring-springboot -springcloud
目录 spring: 动态代理: spring的生命周期(bean的生命周期): SpringMvc的生命周期: SpringBoot: 自动装配: 自动装配流程: Spring中常用的注解: Spring Boot中常用的注解: SpringCloud: 1. 注册中心: 2. gateway(网关): 3. Ribbon(负载均…...
DRG/DIP 2.0时代下基于PostgreSQL的成本管理实践与探索(下)
五、数据处理与 ETL 流程编程实现 5.1 数据抽取与转换(ETL) 在 DRG/DIP 2.0 时代的医院成本管理中,数据抽取与转换(ETL)是将医院各个业务系统中的原始数据转化为可供成本管理分析使用的关键环节。这一过程涉及从医院 HIS 系统中抽取患者诊疗数据,并对其进行格式转换、字…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...






























