当前位置:网站首页>正则表达式未完
正则表达式未完
2022-08-04 18:58:00 【夒爘僭鐤螫】
准备工作。创建测试文件test.txt
一、使用grep 进行查找特定字符
grep -n 表示显示行号
grep -i 表示不区分大小写
grep -v 表示取条件的相反内容
grep -W 精准匹配
1、使用grep查找含有the的行
grep -n "the" test.txt (-n:表示显示行号)
2、使用grep不区分大小写查找含有the的行
grep -ni "the" test.txt (-ni 同-n -i :表示显示行号,且不区分the的大小写)
3、使用grep反向查找不含the的行
grep -n -v "the" test.txt
二、利用grep 配合[ ] 来实现查找集合字符
^[a-z] 表示以小写字母开头
^[A-Z] 表示以大写字母开头
^[0-9]表示以数字开头
[^a-z] 表示某某前面不含小写字母
.................................
大白话:"^"在[ ]里面和外面的含义是不一样的,在外面表示以括号内的内容为行首,在里面表示对括号内的内容反向选择就是取反。
官方语言:“^”符号在元字符集合“[]”符号内外的作用是不一样的,在“[]”符号内表示反向选择,在“[]”符号外则代表定位行首。反之,若想查找以某一特定字符结尾的行则可以使用“$”定位符
1、需求:想要查找“shirt”与“short”这两个字符串时
可以发现这两个字符串均包含“sh” 与“rt”,“[]”中无论有几个字符,都仅代表一个字符,也就是说“[io]”表示匹配“i”或者“o”。
grep -n "sh[io]rt" test.txt
2、需求: 只查找包含重复单个字符“oo”时
[[email protected] mnt]# grep -n "sh[io]rt" test.txt
3、需求: 查找“oo”前面不是“w”的字符串。使用 “[^w]”来实现
[[email protected] mnt]# grep -n '[^w]oo' test.txt
解析:会发现11行和12行,也被匹配到了。此时,是这样的,11行有d三个"ooo",而我们过滤的是两个"oo",但他识别后两个“oo”时两个"oo"的前面就是o而不是w。12行同理。
4、需求:若不希望“oo”前面存在小写字母,用[^a-z] 其中a-z表示小写字母,使用A-Z则表示大写,
[0-9]表示数字。
[[email protected] mnt]# grep -n "[^a-z]oo" test.txt
[[email protected] mnt]# grep -n "[^A-Z]oo" test.txt
[[email protected] mnt]# grep -n "[0-9]" test.txt
5、使用grep配合使用“^”(行首)表示以什么为开头、“$”(行尾)以什么为结尾
①需求:使用grep查找行首以the开头的。
②查询以小写字母开头的行可以通过“^[a-z]”规则来过滤,查询大写字母开头的行则使用“^[A-Z]”规则,若查询不以字母开头的行则使用“^[^a-zA-Z]”规则。
[[email protected] mnt]# grep -n '^[a-z]' test.txt
[[email protected] mnt]# grep -n '^[^a-zA-Z]' test.txt
6、grep过滤查找空白行和点结尾
①需求:查询以小数点(.)结尾的行,小数点在正则中是元元素,具有特殊含义,用”\“,不进行转义。
[[email protected] mnt]# grep -n "\.$" test.txt
②使用grep查询空白行,"^$"
[[email protected] mnt]# grep -n "^$" test.txt
7、查找任意一个字符“.” 与重复字符“*”
在正则表达式中小数点(.)也是一个元字符,匹配任意一个字符,所以上面代表结束的点号时需要加“\”
“*”代表的是重复零个或多个前面的重复字符,例如:“o*”表示拥有零个(即为空字符)或大于等于一个“o”的字符,因为允许空字符。
①需求:grep 查找w和d之间有两任意字符的。
[[email protected] mnt]# grep "w..d" test.txt
②”o*“表示含义0个o或者多个o
解析:表示含有0个o时,打印了所有。
②”oo*“表示第一o存在,第二个o后面有个*号,表示第二个o可以是一个o或者多个o。
解析:文本中至少含有一个o
③”ooo*“表示第一o存在,第二个o存在,第三个o后面有个*号,表示第三个o可以是一个o或者多个o。
[[email protected] mnt]# grep -n "ooo*" test.txt
④ 查询以 w 开头 d 结尾,中间包含至少一个 o 的字符串。
⑤ 查询以 w 开头 d 结尾,中间的字符可有可无的字符串
[[email protected] mnt]# grep -n "w.*d" test.txt
⑥查询任意数字所在行
[[email protected] mnt]# grep "[0-9][0-9]*" test.txt
8、查找连续字符范围“{}”
我们使用“.”与“*”来设定零个到无限多个重复的字符,如果想要限制一个范围内的重复的字符串,用基础正则表达式中的限定范围的字符“{}”,因为“{}”在Shell中具有特殊意义,所以在使用“{}”字时,需要利用转义字符“\”,将“{}”字符转换成普通字符。
①查询两个 o 的字符
[[email protected] mnt]# grep -n "o\{2\}" test.txt
②查询以 w 开头以 d 结尾,中间包含 2~5 个 o 的字符串
[[email protected] mnt]# grep -n "wo\{2,5\}d" test.txt
③查询以 w 开头以 d 结尾,中间包含 2 以上 o 的字符串
[[email protected] mnt]# grep -n "wo\{2,\}d" test.txt
三、元字符汇总
元素符 | 作用(需要表达符号自己原定的含义,需要在符号前添加”\“) |
^ | "^"在[ ]里面和外面的含义是不一样的,在外面表示以括号内的内容为行首,在里面表示对括号内的内容反向选择就是取反,要匹配“^” 字符本身,请使用“\^”。 |
$ | 匹配输入字符串的结尾位置,要匹配“$”字符本身,请使用“\$” |
. | 匹配除“\r\n”之外的任何单个字符 |
\ | 将下一个字符标记为特殊字符、原义字符、向后引用、八进制转义符。例如,‘n’匹配字符“n”。 ‘\n’匹配换行符。序列‘\\’匹配“\”,而‘\(’则匹配“(” |
* | 匹配前面的子表达式零次或多次。要匹配“*”字符,请使用“\*” |
[] | 字符集合,匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a” |
[^] | 对中括号内的内容取反。 |
[n1-n2] | 字符范围,匹配指定范围内的任意一个字符,n2>n1,范围为n1到n2区间任意一个字符。 |
{} | n 是一个非负整数,匹配确定的 n 次。 |
边栏推荐
- 袋鼠云思枢:数驹DTengine,助力企业构建高效的流批一体数据湖计算平台
- 使用.NET简单实现一个Redis的高性能克隆版(二)
- 天呐,七夕我收到9份告白~
- YOLOv7-Pose尝鲜,基于YOLOv7的关键点模型测评
- c语言进阶篇:自定义类型--结构体
- 零基础做出高端堆叠极环图
- STP实验
- Regardless of whether you are a public, professional or non-major class, I have been sorting out the learning route for a long time here, and the learning route I have summarized is not yet rolled up
- 开篇-开启全新的.NET现代应用开发体验
- 如何进行自动化测试?
猜你喜欢
通配符SSL证书不支持多域名吗?
四维图新:子公司首款功能安全 MCU 芯片已陆续送样
Day018 Inheritance
零基础做出高端堆叠极环图
动手学深度学习_VggNet
EuROC 数据集格式及相关代码
How does EasyCVR call the double-speed playback of device recording through the interface?
ECCV 2022 | FPN错位对齐,实现高效半监督目标检测(PseCo)
天呐,七夕我收到9份告白~
Nintendo won't launch any new hardware until March 2023, report says
随机推荐
四维图新:子公司首款功能安全 MCU 芯片已陆续送样
Scala104-Spark.sql的内置日期时间函数
自己经常使用的三种调试:Pycharm、Vscode、pdb调试
WPF 多个 StylusPlugIn 的事件触发顺序
Regardless of whether you are a public, professional or non-major class, I have been sorting out the learning route for a long time here, and the learning route I have summarized is not yet rolled up
【HCIP】MPLS WPN 实验
win10 uwp xaml 绑定接口
作业8.3 线程同步互斥机制条件变量
12. SAP ABAP OData 服务如何支持 $select 有选择性地仅读取部分模型字段值
机器学习——线性回归
动手学深度学习_VggNet
当项目中自动格式化插件Prettier和ESLint冲突报错时如何解决
2019 Haidian District Youth Programming Challenge Activity Elementary Group Rematch Test Questions Detailed Answers
HCIP-R&S By Wakin自用笔记(1)企业网络高级解决方案
Alibaba Cloud International Edition uses ROS to build WordPress tutorial
如何进行自动化测试?
八一建军节 | 致敬中国人民解放军
译文推荐|Apache Pulsar 隔离系列(四):单集群隔离策略
在表格数据集上训练变分自编码器 (VAE)示例
【简答题】月薪4k和月薪8k的区别就在这里