正则表达式

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

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

通配符:用来处理文件名

正则表达式(支持的工具: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"

相关推荐
夜之眷属3 分钟前
服务器被挖矿病毒入侵的排查与清理实录
运维·服务器
for_ever_love__13 分钟前
Redis 持久化讲透:RDB、AOF 与混合持久化怎么选
java·数据库·redis·持久化·aof·区别·rdb
l1t14 分钟前
测试bicdb 20261007提交的0.2版功能
数据库
传人21 分钟前
为什么 Xshell 中可以通过java -version查询到java 版本号码,Electerm 却查不到?
java·linux·服务器
内存漫游29 分钟前
锁与死锁——数据库为什么会发生事务等待?
数据库
赛博守夜人43 分钟前
跨境业务与出海合规之八:面向海外合规监管突击搜查(Dawn Raid)的信息安全应急响应(IR)与合规取证
大数据·数据库
冰暮流星1 小时前
mysql之索引创建,查看,删除
数据库·mysql
陌上花开缓缓归以1 小时前
mebdlts3.4.1安全启动全流程
服务器·算法
鬼手点金1 小时前
opencode-全能开发者配置
java·linux·服务器·前端·javascript·学习·前向传播
溪语流沙1 小时前
【Web全栈进阶】Alembic数据库迁移:改表结构不再删库
前端·数据库·python·elasticsearch·postgresql