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 系统中抽取患者诊疗数据,并对其进行格式转换、字…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践
前言:本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中,跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南,你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案,并结合内网…...
node.js的初步学习
那什么是node.js呢? 和JavaScript又是什么关系呢? node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说, 需要在node.js的环境上进行当JavaScript作为前端开发语言来说,需要在浏览器的环境上进行 Node.js 可…...
MySQL基本操作(续)
第3章:MySQL基本操作(续) 3.3 表操作 表是关系型数据库中存储数据的基本结构,由行和列组成。在MySQL中,表操作包括创建表、查看表结构、修改表和删除表等。本节将详细介绍这些操作。 3.3.1 创建表 在MySQL中&#…...
STM32 低功耗设计全攻略:PWR 模块原理 + 睡眠 / 停止 / 待机模式实战(串口 + 红外 + RTC 应用全解析)
文章目录 PWRPWR(电源控制模块)核心功能 电源框图上电复位和掉电复位可编程电压监测器低功耗模式模式选择睡眠模式停止模式待机模式 修改主频一、准备工作二、修改主频的核心步骤:宏定义配置三、程序流程:时钟配置函数解析四、注意…...
Linux信号保存与处理机制详解
Linux信号的保存与处理涉及多个关键机制,以下是详细的总结: 1. 信号的保存 进程描述符(task_struct):每个进程的PCB中包含信号相关信息。 pending信号集:记录已到达但未处理的信号(未决信号&a…...
安全领域新突破:可视化让隐患无处遁形
在安全领域,隐患就像暗处的 “幽灵”,随时可能引发严重事故。传统安全排查手段,常常难以将它们一网打尽。你是否好奇,究竟是什么神奇力量,能让这些潜藏的隐患无所遁形?没错,就是可视化技术。它如…...






























