正则表达式

正则表达式和通配符的区别

正则表达式:处理的是文本内容中的字符

通配符:用来处理文件名

正则表达式(支持的工具:grep、egrep、sed、awk)

1.代表字符(元字符)

2.表示次数

3.位置锚定

4.分组或其他

基础正则表达式常见的元字符(字符匹配)

不表示本来的含义,在正则表达式中有特殊含义的字符

字符 含义
. 单个任意字符,可以是一个汉字
\ 转义字符,用于取消特殊符号的含义
匹配指定范围内的任意单个字符
:alnum: 字母和数字
:alpha: 代表任何英文大小写字符
:lower: 小写字母
:upper: 大写字母
. 任何元字符放在在方括号里都代表他原来的意思,.在里面意思就是.
\^ 匹配指定范围外的任意单个字符,例如\^0-9匹配任意一位非0-9里的字符

表示次数

字符 含义
* 匹配前面的字符任意次数,0到正无穷次
.* 任意长度字符,不包括0次
\? 0或一次,可有可无的
\ + 1次到正无穷次
\ {3 \ } 前面的字符出现三次
\ {3,5 \ } 前面的字符出现3到5次
\ {3, \ } 前面的字符最少出现三次
\ {,5 \ } 前面的字符最多出现5次

位置锚定

字符 含义
^ 代表开头的行
$ 代表结尾的行
^PATTERN$ 用于模式匹配整行 (单独一行 只有root)
^$ 空行
^\[:space:]*$ 空白行
\ < 代表以什么字符为开头,等同于\b
\ > 代表以什么字符为结尾,等同于\b

echo hello-123 |grep "\ <123"

echo hello_123 |grep "\ <123"

echo hello 123 |grep "\ <123"

除了 字母 数字 下划线其他都算 单词的分隔符

分组或其他

分组:用括号( )将需要组合的字符括起来,当作一个整体去处理,如(root)+

后向引用:分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名

方式为:\1,\2,\3......分组

\1表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符

或者

或者:\|

扩展正则表达式元字符:(支持的工具:egrep、awk)

字符 含义
+ 匹配前面子表达式1次以上,例:go+d,将匹配至少一个o,good、gooood、gooooood都可以匹配到
? 匹配前面子表达式0次或1次,例:go?d,将匹配gd或者god
() 将括号中的字符串看作是一个整体,例:g(oo)+d,将匹配oo整体一次以上,如good、goooood等
| 以或的方式匹配字符串,例:g(oo|la)d,将匹配good或者glad

实验题

如何查找ip地址

ifconfig ens33|grep netmask|grep -o '0-9\+\.0-9\+\.0-9\+\.0-9\+'

ifconfig ens33|grep netmask|grep -o '0-9\{1,3\}\.0-9\{1,3\}\.0-9\{1,3\}\.0-9\{1,3\}'

筛选出ip地址的四个分段

0-9\{1,3}\:三位数,每位是0-9的范围

表示qq号

echo "aa940132245" |grep "\b0-9\{6,12\}\b"

表示邮箱

echo "zhou@qq.com" |grep -E "\[:alnum:]+@\[:alnum:]+\.\[:alnum:_]+"

表示手机号

echo "13705173391"|grep -E "\b134567890-9{9}\b"

相关推荐
广州灵眸科技有限公司23 分钟前
4G 模组开机自连 systemd 服务方案:基于灵眸科技EAI1106--Core-T
运维·服务器·科技
摇滚侠41 分钟前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
川石课堂软件测试1 小时前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http
qq_401700412 小时前
Linux设备树详解
linux·运维·服务器
2501_937767162 小时前
自建 SQL 数据库定时备份踩坑复盘与落地思路
数据库·sql
刚入门的大一新生3 小时前
Linux-信号
linux·运维·服务器
silvamux_3 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
I Am a robert girl5 小时前
从 GameHorizon 拆解多时间尺度游戏评测:数据管线、离线基准与在线回放的三层设计
数据库·游戏·多时间尺度·数据管线·游戏评测·离线基准·在线回放
躺柒5 小时前
读数据安全架构设计与实践17安全架构案例(下)
数据库·安全·零信任·安全架构·防火墙·无边界
SelectDB6 小时前
实时更新排错现场:导入了却查到旧数据,和 FINAL 越加越慢的两条路
大数据·数据库·数据分析