正则表达式介绍与基础

news2024/12/24 3:34:10

正则表达式介绍与基础

首先是正则表达式的特殊符号:

[:alnum:]代表英文大小写字母及数字

[:alpha:]代表英文大小写字母

[:blank:]代表空格和 tab 键

[:cntrl:]键盘上的控制按键,如 CR,LF,TAB,DEL

[:digit:]代表数字

[:graph:]代表空白字符以外的其他

[:lower:]小写字母

[:print:]可以被打印出来的任何字符

[:punct:]代表标点符号

[:upper:]代表大写字母

[:space:]任何会产生空白的字符如空格,tab,CR 等

[:xdigit:]代表 16 进位的数字类型

使用特殊符号查找小写字母:

grep -n '[[:lower:]]' regular_express.txt

img

使用特殊符号查找数字:

grep -n '[[:digit:]]' regular_express.txt

img

grep命令

参数说明:

  • -a :以 text 档案的方式搜寻 binary 档案数据

  • -c :计算找到 '搜寻字符串' 的次数

  • -i :忽略大小写的不同,所以大小写视为相同

  • -n :顺便输出行号

  • -v :反向选择,亦即显示没有 '搜寻字符串' 内容的行

grep -n 'the' regular_express.txt 
grep -in 'the' regular_express.txt

img

反向查找,当该行没有字符串'the'时才显示在屏幕上。

grep -vn 'the' regular_express.txt

2-1-1

字符组匹配

[ ] 可以用来查找字符组。

值得注意的是,无论 [ ] 中包含多少个字符,它都只代表一个字符。比如说,我们想要查找 tast 或者 test 这两个字符串,注意到二者的拼写大部分相同,都是 t?st 的形式,故此时可以使用 [ ] 进行查找:

grep -n 't[ae]st' regular_express.txt

2-2-0

字符组支持使用连字符 - 来表示一个范围。当 - 前后构成范围时,要求前面字符的码位小于后面字符的码位。

[^] 为反向选择字符组,用于排除后面的字符,使用方式为 [^...]

需要注意 [^] 与参数 -v 的区别,尽管二者都表示反向选择,但是如果包含有反向选择的字符的行含有其他字符的话,[^] 仍会输出该行,而 -v 则只会输出不含有反向选择的字符的行。

下面给出一些应用示例:

[abc]                   :表示 “a” 或 “b” 或 “c” 
​
[0-9]                   :表示 0~9 中任意一个数字,等价于 [0123456789] 
​
[\u4e00-\u9fa5]         :表示任意一个汉字 
​
[^a1<]                  :表示除 “a”、“1”、“<” 外的其它任意一个字符
​
[^a-z]                  :表示除小写字母外的任意一个字符
 

使用 -[^] 查找 Xoo 形式的字符串,要求 oo 之前不能包含小写字母:

grep -n '[^a-z]oo' regular_express.txt

回忆前一节所提到的正则表达式特殊符号,[:lower:] 表示小写字母,因此也可以使用

grep -n '[^[:lower:]]oo' regular_express.txt

img

这两者是等价的,但是可以看出,使用[a-z]来表示小写字母明显更加便捷,也更加灵活。

查找字符 oog

grep -n 'oog' regular_express.txt

如果我不想要 oog 字符前面有 g,则使用 [^g]oog

grep -n '[^g]oog' regular_express.txt

同理,若不想让字符 oog 前面为 g 或者 o,则使用 [^go]oog

grep -n '[^go]oog' regular_express.txt

2-2-2

其中

grep -n '[^go]oog' regular_express.txt

返回结果为空,表示没有匹配到符合要求的字符串。

行首符 ^ 与行尾符 $

在第一个实验中,我们使用

grep -n 'the' regular_express.txt

查找含有 the 的字符串,如果你只想查找行首为 the 的字符行,则使用以下命令:

grep -n '^the' regular_express.txt

查找行首为大写字母的所有行:

grep -n '^[A-Z]' regular_express.txt

注意行首符 ^ 和反向选择 [^] 的区别,^[A-Z] 表示以大写字母开头。[^A-Z] 表示除了大写字母 A-Z 的所有字符。

行尾符 $ 的用法与行首符类似。

查找以字母 d 结尾的行:

grep -n 'd$' regular_express.txt

这里有一个小技巧,将行首符与行尾符连用,可以用来查找空行:

grep -n '^$' regular_express.txt
应用实例

查看 /etc/insserv.conf 文档

^$: 过滤掉空白行

^#: 过滤掉注释行(以 # 号开头)

cat -n /etc/insserv.conf
​
grep -v '^$' /etc/insserv.conf | grep -v '^#'

2-2-3

                    任意一个字符 . 与重复字符

查找 a?ou? 类型的字符:

grep -n 'a.ou.' regular_express.txt

其中小数点表示任意一个字符,一个小数点只能表示一个未知字符。

*(星号):代表重复前面 0 个或者多个字符。
e*: 表示具有空字符或者一个以上 e 字符。
ee*,表示前面的第一个 e 字符必须存在。第二个 e 则可以是 0 个或者多个 e 字符。
eee*,表示前面两个 e 字符必须存在。第三个 e 则可以是 0 个或者多个 e 字符。
ee*e :表示前面的第一个与第三个 e 字符必须存在。第二个 e 则可以是 0 个或者多个 e 字符。

下面的第一条命令与第二条命令由于允许存在空字符,所以会打印所有文本。

grep -n 'e*' regular_express.txt
​
grep -n '@*' regular_express.txt
​
grep -n 'eee*' regular_express.txt

限定连续字符范围 { }

{ } 可限制一个范围区间内的重复字符数。如果现在要求找出存在连续的两个 o 字符的字符串,根据前面所学的知识,我们可以使用:

grep -n 'ooo*' regular_express.txt

另一种方式是使用 { }。由于 {} 在 shell 中有特殊意义,故在使用时需要用到转义字符 \

查找连续的两个 o 字符:

grep -n 'o\{2\}' regular_express.txt

查找 g 后面接 2 到 5 个 o,然后再接 g 的字符串:

grep -n 'go\{2,5\}g' regular_express.txt

总结:

^word    表示待搜寻的字符串(word)在行首
word$    表示待搜寻的字符串(word)在行尾
.(小数点) 表示 1 个任意字符
\        表示转义字符,在特殊字符前加 \ 会将特殊字符意义去除
*        表示重复 0 到无穷多个前一个 RE(正则表达式)字符
[list]   表示搜索含有 l,i,s,t 任意字符的字符串
[n1-n2]  表示搜索指定的字符串范围,例如 [0-9] [a-z] [A-Z] 等
[^list]  表示反向字符串的范围,例如 [^0-9] 表示非数字字符,[^A-Z] 表示非大写字符范围
\{n,m\}  表示找出 n 到 m 个前一个 RE 字符
\{n,\}   表示 n 个以上的前一个 RE 字符

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

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

相关文章

SpringBoot MybatisPlus selectOne的坑

目录 一、问题 二、问题解决 三、其他方法 一、问题 selectOne在查询多条数据时会报错&#xff0c;查询语句并不会加 limit 1。 One record is expected, but the query result is multiple records。 二、问题解决 在QueryWrapper上添加如下&#xff1a; QueryWrapper&…

windows11/10 如何快速的安装Halcon21.05 (包括深度学习部分)(已解决)

声明&#xff1a;Halcon21.05 是网页安装&#xff0c;不是安装包安装&#xff0c;虽然前期需要下载它的安装包。 现在开始&#xff0c;先下载安装包 halcon21版本下载连接地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/142qWteiIgHm6QuZVOkX_pw?pwd2tw5 提取码&…

ATA-7020高压放大器在铁电材料测试中的应用研究

铁电材料因其在电场作用下发生自发电极化的独特性质而在材料科学中备受关注。对铁电材料进行测试和研究是理解其性能和应用潜力的关键步骤之一。高压放大器在铁电测试中的应用发挥着至关重要的作用&#xff0c;为科学家们提供了精确控制和测量电场的手段。本文将深入介绍高压放…

PDF预览:利用vue3-pdf-app实现前端PDF在线展示

目录 PDF预览&#xff1a;利用vue3-pdf-app实现前端PDF在线展示 一、vue3-pdf-app组件介绍及其优点 1、vue3-pdf-app是什么 2、作用与场景 3、类似的插件 二、项目初始化与依赖安装 1、初始化Vue3项目 2、安装依赖 三、集成vue3-pdf-app插件 1、引入插件 2、配置组件…

MySQL的Bin Log与Redo Log区别

MySQL的Bin Log与Redo Log区别 1、Bin Log2、Redo Log &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、Bin Log 范围&#xff1a;数据库级别&#xff0c;记录所有修改操作&#xff08;不包括查询&#xff09;&#xff0c;不区分存储引擎…

大数据环境下用户数据隐私安全防护系统的设计与实现(论文+源码)_kaic

摘 要 现如今互联网已在世界范围内广泛的应用和发展&#xff0c;特别是移动互联网Web 技术快速发展&#xff0c;然而最近几年经常发生互联网用户信息泄露及财产损失问题&#xff0c;网络安全漏洞严重威胁Web应用程序安全及互联网用户的网络使用安全&#xff0c;因此现急需一…

基于springcloud+MYSQL的大学生在线学习平台的设计与实现-计算机毕业设计源码43038

摘要 本文介绍了一种基于SpringCloud和MySQL的大学生在线学习平台的设计与实现。该平台采用先进的微服务架构&#xff0c;结合SpringCloud框架的分布式特性&#xff0c;旨在提供高性能、高可用性、可伸缩性强的在线学习环境。系统后端使用MySQL数据库进行数据存储和管理&#x…

js小数相加精度不准确的解决方案

目录 一、发现问题 二、为什么会出现精度误差 三、精度误差的原因 四、如何解决精度出现误差的情况 1.使用toFixed() 2. 使用库&#xff0c;如decimal.js或bignumber.js 一、发现问题 在项目中总会出现数字需要相加的情况&#xff0c;但发现整数相加没问题&#xff0c;小数…

【实现100个unity特效之17】在unity中使用shader和ShaderGraph分别实现模糊特定层,高斯模糊效果

最终效果 Unity通过Shader来模糊场景画面 参考&#xff1a;【游戏开发小技】Unity通过UI全屏图来模糊场景画面&#xff08;Shader | 模糊 | 滤镜 | Blur&#xff09; ShaderGraph实现图片的高斯模糊 参考&#xff1a;【游戏开发实战】Unity ShaderGraph实现图片的高斯模糊效…

Cyberchef实用功能之-URL/IP地址无害化操作

网络安全领域会共享URL&#xff0c;IP&#xff0c;domain等威胁情报信息&#xff0c;尤其是在攻防演练&#xff0c;重保活动&#xff0c;护网hvv的场景及时的威胁情报共享至关重要。这些IP/domain/URL 可能来自于沙箱的报告&#xff0c;pcap的提取&#xff0c;恶意软件的提取&a…

Zabbix模板监控:MySQL性能尽在掌握,智能高效,守护数据库安全稳定!

作者简介&#xff1a;我是团团儿&#xff0c;是一名专注于云计算领域的专业创作者&#xff0c;感谢大家的关注 座右铭&#xff1a;云端筑梦&#xff0c;数据为翼&#xff0c;探索无限可能&#xff0c;引领云计算新纪元 个人主页&#xff1a;团儿.-CSDN博客 目录 前言&#xff1…

Html+CSS小米官网实例练习全部代码

跟随B站视频和GitHub的分享学习复刻小米商城网站&#xff0c;参考的网站如下所示&#xff1a; GitHub分享&#xff1a; https://github.com/0033-Vec/mishopping https://github.com/ldwwwwww/ldwwwwww.github.xiaomi https://github.com/hysmdd/xiaomi-mall B站视频&#xff…

用这6款AI绘图工具,秒变艺术大师!

人工智能正在悄悄地改变创造力的过程。从去年流行的虚拟人物到今年热门的人工智能绘画&#xff0c;人工智能可以以新的创造性形式重塑艺术&#xff0c;如人工智能音乐、人工智能诗歌和人工智能绘画。毫无疑问&#xff0c;人工智能正在给艺术带来巨大的变化。人工智能绘画听起来…

pnpm和npm的区别

pnpm 和 npm 都是用于管理 Node.js 项目中依赖包的工具&#xff0c;但它们有一些关键的不同点。 npm&#xff08;Node Package Manager&#xff09; 安装和管理依赖&#xff1a; npm 是 Node.js 官方的包管理工具&#xff0c;用于安装和管理项目的依赖包。工作原理&#xff1a…

LED显示屏技术背后的隐患

你知道LED显示屏技术背后隐患分析吗?在户外媒体市场&#xff0c;凭借本身发光亮度强且支持自动亮度调节&#xff0c;在可视距离内阳光直射屏幕表面时显示内容依然清晰可见等优势&#xff0c;LED显示屏成为备受青睐的显示终端&#xff0c;然而&#xff0c;“成也亮度&#xff0…

深度学习入门(五):有监督学习

一、逻辑回归 逻辑回归&#xff08;Logistic Regression&#xff09;是一种广泛使用的分类算法&#xff0c;以作者的理解&#xff0c;它是在线性回归【线性回归&#xff1a;拟合一条最接近自变量X与因变量Y关系的直线&#xff0c;线性回归可预测连续值】的基础上添加了一个逻辑…

朵拉朵尚:不断探索与尝试 创新营销模式

朵拉朵尚&#xff1a;不断探索与尝试 创新营销模式 如今是传统国货和新锐品牌的崛起,其中以朵拉朵尚为代表的国货美妆品牌,从原料、配方、生产等多个维度发力,提升产品质量与品牌口碑,成为国货品质的代表。随着实体销售逐渐走低,在百年不遇之大变局时代下,朵拉朵尚创始人李海珍…

未来已来:全方位掌握【人工智能】的系统学习路线

目录 前言 第一部分&#xff1a;基础知识 1. 数学基础 1.线性代数 2.微积分 3.概率与统计 4.离散数学 2. 计算机基础 1.编程语言 2.数据结构和算法 3.计算机体系结构 第二部分&#xff1a;核心技术 1. 机器学习 1.监督学习 2.无监督学习 3.强化学习 2. 深度学…

大模型对任务型对话的作用

大模型的多轮&#xff0c;我们一般想到的方案都是比较大胆地把历史记录都交给大模型让大模型来做生成&#xff0c;这个在比较自由、开放的聊天中&#xff0c;肯定是有效的&#xff0c;但是在实际场景中&#xff0c;我们往往希望模型能够在一定程度控制对话的流程&#xff0c;我…

深度学习入门(三):一些需要多加复习的知识

正负样本 在机器学习和特别是在分类任务中&#xff0c;正样本和负样本是相对于某一分类目标而言的&#xff0c;通常在二分类问题&#xff08;yes or no&#xff09;中&#xff0c;分类后想要的类别就是正样本&#xff0c;其他均为负样本&#xff01;&#xff01;&#xff01; …