当前位置: 首页 > news >正文

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

目录 一. 匹配字符 .&#xff1a;匹配除换行符外的任意单个字符。 二. 位置锚点 ^&#xff1a;匹配输入字符串的开始位置。 $&#xff1a;匹配输入字符串的结束位置。 \b&#xff1a;匹配单词边界。 \B&#xff1a;匹配非单词边界。 三. 重复限定符 *&#xff1a;匹配…...

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 语言中&#xff0c;动态内存分配主要是通过 malloc() 和 free() 函数来完成的。而在 C 中是使用new和delete关键字&#xff0c;来动态分配内存。 虽然 C 语言没有 new&#xff0c;但 malloc() 和 new 在内存分配上的作用是相似的。下面我们详细解释 malloc() 和 ne…...

QT:控件属性及常用控件(3)-----输入类控件(正则表达式)

输入类控件既可以进行显示&#xff0c;也能让用户输入一些内容&#xff01; 文章目录 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值的比对过程&#xff0c;期间遇到2个问题&#xff0c;解决起来花费了一点时间 1. png 和 plist 生成zip的时候再生成MD5值会发生变动。 这个问题解决起来有2种方案&#xff1a; &#xff08;1&#xff09;.第一个方案是将 png和plist的文件时间改…...

博客搭建 — GitHub Pages 部署

关于 GitHub Pages GitHub Pages 是一项静态站点托管服务&#xff0c;它直接从 GitHub 上的仓库获取 HTML、CSS 和 JavaScript 文件&#xff0c;通过构建过程运行文件&#xff0c;然后发布网站。 本文最终效果是搭建出一个域名为 https://<user>.github.io 的网站 创建…...

翻译:How do I reset my FPGA?

文章目录 背景翻译&#xff1a;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 背景 在写博客《复位信号的同步与释放&#xff08;同步复…...

Linux 进程环境变量:深入理解与实践指南

&#x1f31f; 快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。&#x1f31f; &#x1f6a9;用通俗易懂且不失专业性的文字&#xff0c;讲解计算机领域那些看似枯燥的知识点&#x1f6a9; 在 Linux 系统里…...

Linux探秘坊-------5.git

1.git介绍 1.版本控制器 为了能够更⽅便我们管理这些不同版本的⽂件&#xff0c;便有了版本控制器。所谓的版本控制器&#xff0c;就是能让你了解到⼀个⽂件的历史&#xff0c;以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统&am…...

Linux中的几个基本指令(二)

文章目录 1、cp指令例一&#xff1a;例二&#xff1a;例三&#xff1a;例四&#xff1a;例五&#xff1a; 2、mv 指令例一&#xff1a;例二&#xff1a; 3、cat指令例一&#xff1a; 4、tac指令5、which指令6、date指令时间戳&#xff1a;7、zip指令 今天我们继续学习Linux下的…...

Java入门笔记(1)

引言 在计算机编程的广袤宇宙中&#xff0c;Java无疑是一颗格外耀眼的恒星。那么&#xff0c;Java究竟是什么呢&#xff1f; Java是美国Sun公司&#xff08;Stanford University Network&#xff09;在1995年推出的一门计算机高级编程语言。曾经辉煌的Sun公司在2009年被Oracle&…...

设计模式的艺术-开闭原则

原则使用频率图&#xff08;仅供参考&#xff09; 1.如何理解开闭原则 简单来说&#xff0c;开闭原则指的是 “对扩展开放&#xff0c;对修改关闭”。 当软件系统需要增加新的功能时&#xff0c;应该通过扩展现有代码的方式来实现&#xff0c;而不是去修改已有的代码。 例如我…...

【C语言系列】深入理解指针(3)

深入理解指针&#xff08;3&#xff09; 一、字符指针变量二、数组指针变量2.1数组指针变量是什么&#xff1f;2.2数组指针变量怎么初始化&#xff1f; 三、二维数组传参的本质四、函数指针变量4.1函数指针变量的创建4.2函数指针变量的使用4.3两段有趣的代码4.4 typedef关键字 …...

three.js+WebGL踩坑经验合集:写在前面的话

笔者从2023年初开始参与一个基于three.js引擎的web项目的开发工作。本打算2024年春节就把期间踩过的坑写到博客上分享给大家&#xff0c;然而哪怕本专栏的各种构思和内容已经在笔者的脑海里翻滚了一年&#xff0c;得了严重拖延症患者的我还是一直拖到了现在&#xff0c;实在惭愧…...

利用Linux的工作队列(Workqueue)实现中断下半部的处理

本文代码在哪个基础上修改而成&#xff1f; 本文是在博文 https://blog.csdn.net/wenhao_ir/article/details/145228617 的代码基础上修改而成。 关于工作队列(Workqueue)的概念 工作队列(Workqueue)可以用于实现Linux的中断下半部的&#xff0c;之前在博文 https://blog.cs…...

LabVIEW处理复杂系统和数据处理

LabVIEW 是一个图形化编程平台&#xff0c;广泛应用于自动化控制、数据采集、信号处理、仪器控制等复杂系统的开发。它的图形化界面使得开发人员能够直观地设计系统和算法&#xff0c;尤其适合处理需要实时数据分析、高精度控制和复杂硬件集成的应用场景。LabVIEW 提供丰富的库…...

spring-springboot -springcloud

目录 spring: 动态代理: spring的生命周期(bean的生命周期): SpringMvc的生命周期: SpringBoot: 自动装配: 自动装配流程: Spring中常用的注解&#xff1a; Spring Boot中常用的注解&#xff1a; SpringCloud: 1. 注册中心: 2. gateway(网关): 3. Ribbon(负载均…...

DRG/DIP 2.0时代下基于PostgreSQL的成本管理实践与探索(下)

五、数据处理与 ETL 流程编程实现 5.1 数据抽取与转换(ETL) 在 DRG/DIP 2.0 时代的医院成本管理中,数据抽取与转换(ETL)是将医院各个业务系统中的原始数据转化为可供成本管理分析使用的关键环节。这一过程涉及从医院 HIS 系统中抽取患者诊疗数据,并对其进行格式转换、字…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...