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) 可以递归地匹配重复的模式。

正则表达式引擎不支持递归模式,暂时没测试。

十二.重复模式

  • 贪婪模式:对于重复限定符,默认情况下会匹配尽可能多的字符,这叫做贪婪模式。

  • 懒惰模式:在重复限定符之后加上 ?,表示匹配尽可能少的字符,这叫做懒惰模式。

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

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

相关文章

Chrome远程桌面无法连接怎么解决?

Chrome远程桌面连接已停止工作 Chrome远程桌面是一款极为便捷的浏览器插件&#xff0c;能够帮助用户将自己的计算机连接到其他设备&#xff0c;无论是手机、平板电脑还是其他电脑。然而&#xff0c;在实际使用中&#xff0c;许多用户可能会面临各种各样的问题&#xff0c;比如…

备赛蓝桥杯之第十五届职业院校组省赛第一题:智能停车系统

提示&#xff1a;本篇文章仅仅是作者自己目前在备赛蓝桥杯中&#xff0c;自己学习与刷题的学习笔记&#xff0c;写的不好&#xff0c;欢迎大家批评与建议 由于个别题目代码量与题目量偏大&#xff0c;请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题&#xff0…

基于AutoDL云计算平台+LLaMA-Factory训练平台微调本地大模型

1. 注册与认证 访问AutoDL官网&#xff1a;前往 AutoDL官网。 注册账号&#xff1a;完成注册流程。 实名认证&#xff1a;按照要求完成实名认证&#xff0c;以确保账号的合规性。 2. 选择GPU资源 进入算力市场&#xff1a;在官网首页点击“算力市场”菜单。 挑选GPU&#x…

C语言练习(19)

已知5个学生的4门课的成绩&#xff0c;要求求出每个学生的平均成绩&#xff0c;然后对平均成绩从高到低将各学生的成绩记录排序&#xff08;成绩最高的学生排在数组最前面的行&#xff0c;成绩最低的学生排在数组最后面的行&#xff09;。 #include <stdio.h> #include &…

微信小程序使用picker根据接口给的省市区的数据实现省市区三级联动或者省市区街道等多级联动

接口数据如上图 省市区多级联动&#xff0c;都是使用的一个接口通过传参父类的code。返回我们想要的数据 比如获取省就直接不要参数。市就把省得code传给接口&#xff0c;区就把市的code作为参数。 <picker mode"multiSelector" :range"mulSelect1" …

VOSK实现【离线中文语音】识别

Vosk是一款开源的离线语音识别工具包&#xff0c;具有以下功能&#xff1a; 多语言支持&#xff1a;能够对20多种语言和方言进行语音识别&#xff0c;如中文、英语、德语、法语、西班牙语等&#xff0c;可满足不同用户的语言需求。 模型轻量化&#xff1a;每种语言的模型大小仅…

【Maui】注销用户,采用“手势”点击label弹窗选择

文章目录 前言一、问题描述二、解决方案三、软件开发&#xff08;源码&#xff09;3.1 方法一&#xff1a;前端绑定3.2 方法二&#xff1a;后端绑定3.3 注销用户的方法 四、项目展示 前言 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架&#xff0c;用于使用 C# 和 XAML 创…

macOS使用LLVM官方发布的tar.xz来安装Clang编译器

之前笔者写过一篇博文ubuntu使用LLVM官方发布的tar.xz来安装Clang编译器介绍了Ubuntu下使用官方发布的tar.xz包来安装Clang编译。官方发布的版本中也有MacOS版本的tar.xz&#xff0c;那MacOS应该也是可以安装的。 笔者2015款MBP笔记本&#xff0c;CPU是intel的&#xff0c;出厂…

中企出海:从国际投资建厂:投前投中投后重点事项

1. 投前重点事项 1.1 市场调研与分析 在国际投资建厂的投前阶段&#xff0c;市场调研与分析是至关重要的基础工作&#xff0c;它能够帮助企业全面了解目标市场&#xff0c;为后续决策提供有力依据。 市场规模与潜力&#xff1a;通过收集和分析目标国家或地区的经济数据、行业…

Git实用指南:忽略文件、命令别名、版本控制、撤销修改与标签管理

目录 1.忽略特殊文件 1.1.那如何配置我们需要忽略的文件的呢&#xff1f; 1.2.如何检验效果&#xff1f; 2.给命令配置别名 3.基本操作之版本回退 3.1.使用场景&#xff1a; 3.2.使用方法&#xff1a; 4.撤销修改 情况一&#xff1a;对于工作区的代码&#xff0c;还没…

Glary Utilities Pro 多语便携版系统优化工具 v6.21.0.25

Glary Utilities是一款功能强大的系统优化工具软件&#xff0c;旨在帮助用户清理计算机垃圾文件、修复系统错误、优化系统性能等。 软件功能 清理和修复&#xff1a;可以清理系统垃圾文件、无效注册表项、无效快捷方式等&#xff0c;修复系统错误和蓝屏问题。 优化和加速&…

Oracle 创建并使用外部表

目录 一. 什么是外部表二. 创建外部表所在的文件夹对象三. 授予访问外部表文件夹的权限3.1 DBA用户授予普通用户访问外部表文件夹的权限3.2 授予Win10上的Oracle用户访问桌面文件夹的权限 四. 普通用户创建外部表五. 查询六. 删除 一. 什么是外部表 在 Oracle 数据库中&#x…

基于FPGA的BPSK+costas环实现,包含testbench,分析不同信噪比对costas环性能影响

目录 1.算法仿真效果 2.算法涉及理论知识概要 3.Verilog核心程序 4.完整算法代码文件获得 1.算法仿真效果 本作品是之前作品的改进和扩展&#xff1a; 1.m基于FPGA的BPSK调制解调通信系统verilog实现,包含testbench,包含载波同步_csdn基于fpga的bpsk-CSDN博客 2.m基于FP…

后端开发Web

Maven Maven是apache旗下的一个开源项目&#xff0c;是一款用于管理和构建java项目的工具 Maven的作用 依赖管理 方便快捷的管理项目依赖的资源&#xff08;jar包&#xff09;&#xff0c;避免版本冲突问题 统一项目结构 提供标准、统一的项目结构 项目构建 标准跨平台(…

前沿技术趋势洞察:2024年技术的崭新篇章与未来走向!

引言 时光飞逝&#xff0c;2024年已经来临&#xff0c;回顾过去一年&#xff0c;科技的迅猛进步简直让人目不暇接。 在人工智能&#xff08;AI&#xff09;越来越强大的今天&#xff0c;我们不再停留在幻想阶段&#xff0c;量子计算的雏形开始展示它的无穷潜力&#xff0c;Web …

【10.2】队列-设计循环队列

一、题目 设计你的循环队列实现。 循环队列是一种线性数据结构&#xff0c;其操作表现基于 FIFO&#xff08;先进先出&#xff09;原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普…

博客之星2024年度总评选——我的年度创作回顾与总结

2024年&#xff0c;是我在CSDN博客上持续耕耘、不断成长的一年。在此&#xff0c;与大家分享一下我的年度创作回顾与总结。 一、创作成长与突破 在人工智能领域&#xff0c;技术迭代迅速&#xff0c;知识更新频繁。为了保持自己的竞争力&#xff0c;在今年&#xff0c;我始终…

IDEA运行Java项目总会报程序包xxx不存在

我的在另外一台电脑上跑是没有问题的&#xff0c;在新的电脑上跑的时候&#xff0c;又出现了这个恶心的问题...... 思来想去&#xff0c;唯一的问题就是我的mavn环境没的配置好 如何在本地部署mavn环境&#xff0c;这里推荐一篇很好的文章&#xff1a; Maven安装与配置&…

java 根据前端传回的png图片数组,后端加水印加密码生成pdf,返回给前端

前端传回的png图片数组&#xff0c;后端加水印加密码生成pdf&#xff0c;返回给前端 场景&#xff1a;重点&#xff1a;maven依赖controllerservice 场景&#xff1a; 当前需求&#xff0c;前端通过html2canvas将页面报表生成图片下载&#xff0c;可以仍然不满意。 需要java后…

数据分库分表和迁移方案

在我们业务快速发展的过程中&#xff0c;数据量必然也会迎来突飞猛涨。那么当我们的数据量百倍、千倍、万倍、亿倍增长后&#xff0c;原有的单表性能就不能满足我们日常的查询和写入了&#xff0c;此时数据架构就不得不进行拆分&#xff0c;比如单表拆分成10张表、100张表、单个…