正则表达式

基本正则表达式

元字符

. 匹配任意单个字符

[root@localhost ~]# mkdir /temp
[root@localhost temp]# touch {1..9}
[root@localhost temp]# ls | grep '^.$'
1
2
3
4
5
6
7
8
9
#同理,两个点就是任意两个字符

[] 匹配指定范围内的任意单个字符

//匹配2,3,4
[root@localhost temp]# ls | grep '^[234]$'
2
3
4

//匹配2-6
[root@localhost temp]# ls | grep '^[2-6]$'
2
3
4
5
6
//当'-'在中括号开始和结尾处,表示'-'本身,例如
[root@localhost temp]# ls | grep '^[-26]$'
2
6
[root@localhost temp]# ls | grep '^[26-]$'
2
6
[root@localhost temp]# ls | grep '^[-26-]$'
2
6

[^] 匹配指定范围外的任意单个字符

//匹配2,6外的任意单个字符
[root@localhost temp]# ls | grep '^[^26]$'
1
3
4
5
7
8
9
//'^'必须在中括号的开始,否则表示'^'本身,例如
[root@localhost temp]# ls | grep '^[2^6^]$'
2
6

匹配次数(贪婪模式)

  • 匹配器前面的任意单个字符任意次(0到正无穷次)
//'*'前面的单个字符,也就是b,可以没有一次,也可以有任意次
[root@localhost temp]# ls | grep '^ab*c$'
abbbc
abc
ac
[root@localhost temp]# ls | grep '^ab*$'
a
ab
abb
abbb

.* 任意长度的任意字符

[root@localhost temp]# ls | grep '.*'
1
2
3
4
5
6
7
8
9
a
ab
abb
abbb
abbbc
abc
ac

? 匹配其前面任意单个字符0次或1次

[root@localhost temp]# ls | grep '^ab\?$'
a
ab
[root@localhost temp]# ls | grep '^ab\?c$'
abc
ac

+ 匹配其前面任意单个字符至少一次

[root@localhost temp]# ls | grep '^ab\+$'
ab
abb
abbb
[root@localhost temp]# ls | grep '^ab\+c$'
abbbc
abc

{m,n} 匹配其前面任意单个字符至少m次,至多n次

//匹配\{1,2\}前面的单个字符,也就是b,至少一次,至多2次
[root@localhost temp]# ls | grep '^ab\{1,2\}$'
ab
abb

//只匹配2次
[root@localhost temp]# ls | grep '^ab\{2\}$'
abb

//只匹配3次
[root@localhost temp]# ls | grep '^ab\{3\}$'
abbb

位置锚定

^ 锚定行首,此字符后面的任意单个字符必须出现在行首

[root@localhost temp]# touch jjabc aabc abccld

[root@localhost temp]# ls | grep '^a'
a
aabc
ab
abb
abbb
abbbc
abc
abccld
ac
[root@localhost temp]# ls | grep '^j'
jjabc

$ 锚定行尾,此字符前面的任意单个字符必须出现在行尾

[root@localhost temp]# ls | grep 'b$'
ab
abb
abbb
[root@localhost temp]# ls | grep 'c$'
aabc
abbbc
abc
ac
jjabc

^$ 空白行

[root@localhost temp]# cat > a << EOF
> hello world
>
> nihao shijie
> EOF
[root@localhost temp]# cat a
hello world

nihao shijie
//过滤文本中的空白行
[root@localhost temp]# cat a | grep -v '^$'     //-v是grep命令中取反的意思
hello world
nihao shijie

\

Original: https://www.cnblogs.com/zicnotes/p/16694722.html
Author: Zic师傅
Title: 正则表达式

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/607459/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java多线程volatile、ThreadLocal、线程池、atomic

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月11日
    097
  • 【转】谈谈 JVM 内部锁升级过程

    一、加锁发生了什么 //System.out.println&#x90FD;&#x52A0;&#x4E86;&#x9501; public void…

    Linux 2023年6月16日
    0126
  • Linux静默安装weblogic12(fmw_12.1.3.0.0_wls.jar)

    1、安装JDK环境 2、创建安装用户 3、配置JAVA环境变量 4、创建响应文件wls.rsp 响应文件中的项一定要写全,否则会报奇怪的错误。 5、创建Loc文件oraInst.l…

    Linux 2023年6月14日
    0105
  • NoteOfMySQL-11-权限管理

    一、权限系统 MySQL数据库中使用3种不同类型的安全检查:登录验证、授权、访问控制。 二、权限表 MySQL权限表存储在名为mysql的数据库中,常用的表有user、db、tab…

    Linux 2023年6月14日
    084
  • Redis设置密码

    设置密码有两种方式。 运行cmd切换到redis根目录,先启动服务端 ><span class="hljs-selector-tag">red…

    Linux 2023年5月28日
    087
  • MySQL环境变量配置方法

    MySQL配置方法 下载免安装版本的MySQL数据库,大家根据自己的开发环境下载对应版本的数据库,我在此举例的是Windows系统下的配置方法,下载地址如下: https://de…

    Linux 2023年6月7日
    0107
  • 网络层协议以及IP数据包 ARP的协议

    ipv6 老设备 不支持华为 IP数据包格式 (分为20字节的固定部分,表示每个ip数据包必须包含的部分,和40字节的可变长部分) ·版本号(4bit)︰指P协议版本。并且通信双方…

    Linux 2023年6月6日
    089
  • MySQL 新增表分区很慢,转移大表数据

    问题: MySQL (version 5.7.26) 数据库有一批表 xxx_yyy,由于评估的数据量可能比较大,因此每张表都设置了表分区,把每个月的数据保存在单独的分区里。 那么…

    Linux 2023年6月14日
    0105
  • Linux系统中断处理框架(3)【转】

    //init/main.casmlinkage void __init start_kernel(void){…… trap_init(); //空函数…… ear…

    Linux 2023年6月8日
    0110
  • 302跳转

    题目如下 打开环境显示如下 点击Give me Flag发生跳转,并且多了index.html 题目提示为HTTP临时重定向,302代表临时转移,通过F12的网络功能找到了302 …

    Linux 2023年6月7日
    093
  • [云计算]腾讯云从业者认证-思维导图

    第一章 云计算基础介绍 第二章 腾讯云服务器产品介绍 第三章 腾讯云网络产品介绍 第四章 腾讯云CDN加速产品介绍 第五章 腾讯云存储产品介绍 第六章 腾讯云数据库产品介绍 第七章…

    Linux 2023年6月13日
    0129
  • WPF 已知问题 某些设备上的应用在 WindowChromeWorker 抛出 System.OverflowException 异常

    准确来说,这个不算是 WPF 的问题,而是系统等的问题。在某些设备上的使用了 WindowChrome 功能的 WPF 应用,将在运行过程,在 WindowChromeWorker…

    Linux 2023年6月6日
    0101
  • C++ NFS挂载

    挂载NFS 挂载NFS时,常用的命令比如: #将远程目录挂载到本地/home/share目录下 mount -t nfs -o nolock 192.168.1.10:/tmp /…

    Linux 2023年6月8日
    082
  • PYTORCH: 60分钟 | 训练一个分类器

    你已经知道怎样定义神经网络,计算损失和更新网络权重。现在你可能会想, 那么,数据呢? 通常,当你需要解决有关图像、文本或音频数据的问题,你可以使用python标准库加载数据并转换为…

    Linux 2023年6月16日
    0196
  • Vim 常规教程

    vim 入门到进阶 vim 有四种使用模式 编辑模式, 按 ESC切换 写入模式, 在编辑模式 按 a i 切换 可选模式, 在编辑模式 按 v V 切换 命令模式, 在编辑模式 …

    Linux 2023年6月7日
    0130
  • Linux性能监控-sar

    sar是一个非常全面的一个分析工具,对文件的读写,系统调用的使用情况,磁盘IO,CPU相关使用情况,内存使用情况,进程活动等都可以进行有效的分析。sar工具将对系统当前的状态进行取…

    Linux 2023年6月6日
    0133
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球