K:正则表达式之基础简介

『现学现忘』Shell编程 — 22、基础正则表达式 文章目录1、正则表达式说明2、基础正则表达式3、练习(1)准备工作(2)"*"练习注意:限位(制)符:(3)"."练习(4)"^"和"$"练习(5)"[ ]"练习(6)"[^]"练习(7)`\{n\}`练习(8)`\{n,\}`练习(9)`\{n,m\}`练习4、总结 1、正则表达式说明 正则表达式和通配符的区别 正则表达式用来在文件中匹配符合条件的字符串。 通配符用来匹配符合条件的文件名。 在Shell中,使用在文件当中搜索字符串的命令,如grep,awk,sed等命令(文本操作三剑客),可以支持正则 阅读详情

正则表达式(regular expression 简称regex)是一种工具,和其它工具一样是为了解决某一类问题而发明的。正则表达式是一些用来匹配和处理文本的字符串。平时主要用于查找和替换符合相应模式的文本,而该模式,就是由正则表达式所定义。需要注意的是,使用正则表达式对字符串进行匹配,正则表达式的编写方案并不是唯一的,同一个问题,往往会有多种方案。同时,需要注意的是正则表达式的语法是区分大小写的即\d和\D表示的是不同的意思。

正则表达式的特殊字符及其含义如下:

. 用来匹配任意单个字符,当字符本身为“.”时,需要使用\来对其进行转义即(\.用于表示.这个字符本身,而不是任意单个字符。在绝大多数的正则表达式的实现里,.只能用于匹配除了换行符以外的任何单个字符)

[]用来定义一个字符集合。其表示在[]中所包含的字符的其中一个类似与sql语句中的in的作用。在[]中,可以使用“-”来表示一个集合的范围,例如[1-9]和[0123456789]是等价的,当然,其不仅限于数字,以下的也是合法的字符区间:

A-Z:匹配从A到Z的所有大写字母

a-z:匹配从a到z的所有小写字母

A-F:匹配从A到F的所有大写字母

A-z:匹配从ASCII字符A到ASCII字符z的所有字母,该模式不常用,因为其还包含着[和^等在ASCII字符表里排列在Z和a之间的字符。可以在一个字符集合中给出多个字符区间,例如[A-Za-z0-9]表示所有的数字和大小写字母

同时,可以使用[^]用于表示需要匹配的字符不在该定义的集合区间中。当要匹配“[]”本身的时候,需要使用\来对其进行转义,即\[\]的形式表示[]本身。

ps:对于转义字符\,若要表示该字符本身,需要使用\\来表示

 

以下的均为空白符(即原始文本的中的非打印字符)

\f用来匹配一个换页符

\n用来匹配一个换行符

\r用来匹配一个回车符

\t用来匹配一个制表符

\v用来匹配一个垂直制表符

 

ps:需要注意的是,\r\n是windows所使用的文本行结束标签,Unix和Linux系统只使用一个换行符来结束一个文本行;换句话说,在Unix/Linux系统上匹配空白行只用\n即可,不需要加上\r。还有一点是,f、n、r、t、v等字符本身是普通的字符,当用其来匹配空白符的时候,需要对其进行转义。

 

\d用于匹配任意一个数字,其等价于[0-9]

\D用于匹配任意一个非数字字符,其等价于[^0-9]

\w用于匹配任意一个字母字符(包括大小写)和数字字符或下划线字符,等价于[0-9A-Za-z_]

\W用于匹配任意一个非字母(包括大小写)数字或下划线字符,等价于[^0-9A-Za-z_]

\s用于匹配任意一个空白字符,等价于[\f\n\r\t\v]

\S用于匹配任意一个非空白字符,等价于[^\f\n\r\t\v]

\x用于匹配某个特定字符的十六进制,例如\x0A对应于ASCII码字符10,其效果等价于\n

\0用于匹配某个特定字符的八进制,例如\011对应于ASCII码中的字符9,其等价于\t

 

POSIX字符类:

[:alnum:]用于匹配任意一个字母或数字(等价于[a-zA-Z0-9])

[:alpha:]用于匹配任意一个字母(等价于[a-zA-Z])

[:blank:]用于匹配空格或制表符(等价于[\t ]注意的是,t后面有一个空格)

[:cntrl:]用于匹配ASCII码控制字符(ASCII码0到31,再加上ASCII码127)

[:digit:]用于匹配任意一个数字(等价于[0-9])

[:print:]用于匹配任意一个可打印字符

[:graph:]和[:print:]一样,但是不包括空格

[:lower:]用于匹配任意一个小写字母(等价于[a-z])

[:upper:]用于匹配任意一个大写字母(等价于[A-Z])

[:punct:]用于匹配既不属于[:alnum:]也不属于[:cntrl:]的任何一个字符

[:space:]用于匹配任意一个空白符,包括空格(等价于[^\f\n\r\t\v ]v后面还有一个空格)

[:xdigit:]用于匹配任何一个十六进制数字(等价于[a-fA-F0-9])

POSIX字符类的使用举例:

[[:xdigit:]]可以用于匹配A和F等16进制的数字。需要注意的是,POSIX字符类必须括在[:和:]之间。外层的[]用于定义一个字符集合

 

重复匹配:

+用于匹配前一个字符一个或者多个,至少匹配一个,不匹配零个字符的情况。如果要匹配+本身这个字符,需要对该字符进行转义即\+用于表示“+”这个字符本身。

*用于匹配零个或多个字符,如果要匹配*本身,需要对该字符进行转义,即\*表示字符“*”本身。

?用于匹配一个字符的零个或者一个,最多不能超过一个。如果要匹配字符?本身,则需要对字符?进行转义,即\?表示匹配字符“?”本身。

{m}用于匹配前一个字符m次,且必须是m次,少一次都不能进行匹配,需要注意的是,要匹配字符“{”和字符“}”,需要对其进行转义,即\{和\}用于匹配“{”和“}”字符本身。

{m,n}用于匹配前一个字符最少m次,最多n次。

{m,}用于匹配前一个字符至少m次,即匹配m次或理论上得无限次。

ps:需要注意的是,*和+以及{m,}都是贪婪型的匹配,其在进行模式匹配的时候,会尽可能的从一个文本的开头一直匹配到这段文本的末尾,而不是从这段文本的开头碰到第一个匹配的为止。要使其在碰到文本的第一个匹配为止就结束匹配,则应当将*和+以及{m,}变成懒惰匹配。变成懒惰匹配的方法是在*和+以及{m,}之后加上一个?使其在遇到合适的匹配的时候,就结束模式的匹配。

 

贪婪型匹配的一个例子:

文本:This offer is not available to customers living in <B>AK</B> and <B>HI</B>

正则表达式:<[Bb]>.*</[Bb]>

其匹配的结果是<B>AK</B> and <B>HI</B>

正则表达式修改为<[Bb]>.*?</[Bb]>

其匹配的结果:<B>AK</B>      <B>HI</B>

 

 

位置匹配:

位置匹配用来解决在什么地方进行字符串匹配操作的问题。

\b用来匹配一个单词的开始或结尾。需要注意的是,如果想匹配一个完整的单词,则必须在需要进行匹配的单词前后均加上一个\b。例如:\bcat\b用于匹配单词cat,而无法匹配scatter。而且需要注意的是,\b只是对位置进行匹配,而不匹配任何字符。

\B用于表明不匹配一个单词的边界即字母数字下划线之间,或者非字母数字下划线之间

^用于匹配字符串的开头,即整个文本的开头。当要匹配字符^本身的时候,需要对其进行转义处理,即\^用于匹配字符“^”本身

$用于匹配字符串的结尾,即整个文本的结尾。当要匹配字符$本身的时候,需要对其进行转义处理,即\$用于匹配字符“$”本身


【AIGC】Qwen3-Embedding:Embedding与Rerank模型新标杆 Qwen3-Embedding:文本嵌入与重排序模型的技术解析与应用实践 阅读详情

相关推荐

PyQtWebEngine安装避坑指南:快速解决ModuleNotFoundError

本文详细解析了PyQt5开发中常见的ModuleNotFoundError: No module named 'PyQt5.QtWebEngineWidgets'错误。核心原因是PyQt5 5.11版本后,网页引擎组件被独立为PyQtWebEngine包。文章对比了退回旧版本、独立安装及使用Conda等多种解决方案,并提供了针对Windows、macOS和Linux不同平台的实战安装指南与验证方法,帮助开发者快速解决依赖问题。

weixin_29056101的博客 428

正则表达式快速入门

什么是正则表达式? 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 元字符 元字符是构造正则表达式的一种基本元素 常用的元字符 代码 说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $

sinat_38021004的博客 1025

Unified Access Control:从NAS到RRC的5G接入控制全流程解析

本文深入解析了5G统一接入控制(Unified Access Control)的全流程,从NAS到RRC的协同工作机制。通过身份核验、业务分类和动态决策三个核心步骤,UAC实现了智能调度和弹性决策,确保海量设备接入时的网络稳定性。文章详细介绍了USIM卡的身份凭证体系、NAS层的业务分类引擎以及RRC层的动态决策机制,并提供了实战案例和常见问题排查方法。

weixin_30855099的博客 591

正则表达式进阶(二)——零宽断言的精妙运用:\b \B \K \z \A

零宽断言是正则表达式中不消耗字符、仅约束匹配位置的高级工具,适用于复杂文本处理。本文详细介绍了五种重要的零宽断言:\b(单词边界)、\B(非单词边界)、\K(重置匹配起点)、\z(字符串绝对结尾)和\A(字符串绝对开头),并通过示例展示了其在实际场景中的应用。例如,\b用于匹配完整单词,\K用于提取特定子串,\z和\A分别锚定字符串的结尾和开头。这些工具通过精确控制匹配边界,提升了正则表达式的灵活性和效率。

vortex5的博客 1975

CentOS 8下openLDAP服务器搭建避坑指南:从第三方仓库到phpLDAPadmin配置

本文详细介绍了在CentOS 8环境下搭建openLDAP服务器的完整流程,包括利用Symas第三方仓库解决官方仓库不支持的问题,以及phpLDAPadmin的配置技巧。内容涵盖环境准备、核心配置、安全加固、性能优化等关键环节,帮助系统管理员避开常见陷阱,实现高效稳定的LDAP服务器部署。

weixin_30919429的博客 408

电赛经验分享——赛前准备

⏩ 大家好哇!我是小光,想要成为系统架构师的嵌入式爱好者。⏩在之前的电赛中取得了省一的成绩,本文对电赛比赛前需要准备什么做一个经验分享。加入小光嵌入式交流群(qq群号:737327353)免费获取博主所有资料哦!

qq_52608074的博客 7780

正则基础之——反向引用

1        概述捕获组捕获到的内容,不仅可以在正则表达式外部通过程序进行引用,也可以在正则表达式内部进行引用,这种引用方式就是反向引用。要了解反向引用,首先要了解捕获组,关于捕获组,参考 正则基础之——捕获组(capture group)。反向引用的作用通常是用来查找或限定重复、查找或限定指定标识配对出现等等。对于普通捕获组和命名捕获组的引用,语法如下:普通捕获组反向引用

雁过无痕 3万+

STM32超声波避障小车硬件设计与实时测距实现

超声波测距是嵌入式系统中经典的环境感知技术,其原理基于声波在空气中的传播时间与距离的线性关系,通过精确计时实现非接触式距离测量。该技术具备成本低、抗光干扰强、算法简洁等优势,广泛应用于智能小车、机器人避障、液位监测等场景。工程落地的关键在于硬件信号完整性(如5V/3.3V电平匹配)、微秒级定时精度(依赖高稳定外部晶振与输入捕获模式)以及强干扰环境下的数据鲁棒性(需软硬协同滤波)。本文以STM32F103C8T6为平台,深入解析HC-SR04模块的时序闭环控制、TIM3输入捕获双沿测量、L298N电机状态机驱

weixin_42578963的博客 297

正则表达式

速度理解正则用法

m0_58520840的博客 5179

Python+Seaborn可视化:双因素方差分析结果这样呈现更专业

本文详细介绍了如何利用Python中的Seaborn和statsmodels库,专业地执行并可视化双因素方差分析结果。通过模拟实验数据,演示了从模型构建、统计检验(包括交互作用分析)到诊断验证的全流程。重点展示了如何使用Seaborn绘制交互效应图、组合分布图及热图,将复杂的统计结果转化为直观、富有洞察力的可视化图表,助力科研论文与商业报告的专业呈现。

weixin_29274969的博客 137

SAP Word 模板与 ABAP XML 数据流合并机制深度解析

Office Open XML 标准把一个.docx拆分成多个部件(document.xml、customXml\item1.xml 等),天然支持命名空间与 XPath;Word 在渲染时,会扫描<w:sdt>(结构化文档标签)与来确定绑定关系;在 ABAP 端,通过简单字符串替换与 XSLT 变换即可完成数据灌入,无需 COM Automation,安全且易于调试。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 373

正则表达式讲解

最实用的正则表达式详细讲解

santugege的博客 2332

C#实战:YOLOv5+海康工业相机上位机开发全攻略(从图像采集到检测落地)

工业场景下AI质检系统的开发需要综合考虑硬件适配性、算法性能和稳定性。本文针对新能源电池极片缺陷检测场景,提出基于海康工业相机+YOLOv5+C#的技术方案,涵盖以下关键点: 工业级技术选型:选择支持全局快门的海康相机、OpenCvSharp图像处理、YOLOv5s轻量化模型,确保在无GPU工控机上稳定运行。 开发流程优化: 海康SDK集成:详细说明DLL配置和常见报错解决方案 YOLOv5模型导出:强调batch=1、opset12等工业适配参数 相机采集封装:提供线程安全的C#封装类,支持触发采集模式

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1197

正则表达式详解:从基础到扩展的全面指南

正则表达式详解:从基础到扩展 正则表达式是用于描述字符匹配模式的语法规则,广泛应用于Linux文本处理工具(如grep、sed、awk)中。本文系统讲解了正则表达式的概念、基础正则(BRE)和扩展正则(ERE)的核心元字符及用法。 基础正则支持的核心元字符包括行首/行尾锚定(^/$)、任意字符(.)、重复匹配(*/{n})和字符组([])等。扩展正则在此基础上增加了+、?、()、|等元字符,简化了复杂模式的编写。此外还介绍了特殊字符组(如[[:digit:]])的用法,用于简化常用字符范围的匹配。 通过实际

Sadsvit的博客 1021

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

正则表达式基础学习

正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),可以用来描述和匹配字符串的特定模式。

Reset 2067

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VBA基础知识整理(正则表达式)

'一 正则表达式 '正则表达式是处理字符串的外部工具,它可以根据设置的字符串对比规则,进行字符串的对比、替换等操作。 '正则表达式的作用: '1、完成复杂的字符串判断 '2、在字符串判断时,可以最大限度的避开循环,从而达到提高运行效率的目的。 '二 使用方法 '1、引用法 '点击VBE编辑器菜单:工具 - 引用,选取: Microsoft VBScr...

weixin_42578747的博客 1万+

Shell脚本-正则表达式

正则表达式(或称Regular Expression,简称RE),是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的分割,匹配、査找及替换操作。即正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。简单来说就是通过一些特殊字符的排序正则表达式是你所定义的模式模板, Linux工具可以用它来过滤文本。Linux 工具(比如sed编辑器或gawk程序)能够在处理数据时使用正则表达式对数据进行模式匹配。如果数据匹配模式,它就会被接受并进一步处理;如果数据不匹配模式,它就会被滤掉。

2301_78088515的博客 1602

正则表达式简介

正则表达式简介

戴泽王的博客 1740

正则表达式基础

       转贴一个,免得每次要用都要再网上找半天-_-#,尽快熟练运用正则-_-# 前言  正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。只要认真去阅读这些资料,加上应用的时候进行一定的参考,掌握正则表达式不是问题。索引1. 引子  目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,

Red_angelX的专栏 1780

vbs脚本正则表达式简介

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...

大风起兮 2058

python正则表达式

学会使用常见的正则表达式一、 正则表达式基础1.1.概念介绍正则表达式是用于处理字符串的强大工具,它并不是Python的一部分。其他编程语言中也有正则表达式的概念,区别只在于不同的编程语言实现支持的语法数量不同。它拥有自己独特的语法以及一个独立的处理引擎,在提供了正则表达式的语言里,正则表达式的语法都是一样的。下图展示了使用正则表达式进行匹配的流程: 1.2. 数量词的贪婪模式与非贪婪模式正则表达式通常用于在文本中查找匹配的字符串。贪婪模式,总是尝试匹配尽可能多的字符;非贪婪模式则相反,总是尝试匹配尽可能少

阿极的博客 9747

Python正则表达式(二):基础语法、常用正则表达式

文章目录一.正则表达式基础语法二.方括号里用“^”表示不希望出现的字符三.由字符‘\’和另一个字符组成特殊含义四.正则表达式实战五.RegExp对象的属性和方法六.常用正则表达式1.校验数字的表达式2.校验字符的表达式3.特殊需求表达式 一.正则表达式基础语法 字符 描述 ^ 指出一个字符串的开始 $ 指出一个字符串的结束 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符 ^abc 匹配所有以 “abc” 开始的字符串 (例如:“abc”,“

YFater的博客 2347

Linux 正则表达式详解(基础 + 扩展 + 实操)

正则表达式是模式模板匹配的数据:被工具接受并进一步处理(如输出、替换)不匹配的数据:被直接滤除本质:通过 “普通字符 + 元字符” 的组合,描述字符串的排列规则,实现对文本的分割、匹配、查找、替换基础正则 vs 扩展正则{n}{n,}{n,m}需转义(\{n\}),无?(){n}无需转义,支持?(),工具用egrepsed -rawk元字符优先级分组()> 次数?{n}> 位置> 逻辑特殊字符组:优先使用而非[0-9],跨平台更稳定。

2502_92562214的博客 2016

正则表达式简介及在C++11中的简单使用

正则表达式(regular expression)是计算机科学中的一个概念,又称规则表达式,通常简写为regex、regexp、RE、regexps、regexes、regexen。 正则表达式是一种文本模式。正则表达式是强大、便捷、高效的文本处理工具。正则表达式本身,加上如同一门袖珍编程语言的通用模式表示法(general pattern notation),赋予使用者描述和分析文本的能力。配...

网络资源是无限的 4万+
上一篇: K:maven的相关介绍
下一篇: K:正则表达式之进阶
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值