正则表达式

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

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

通配符:用来处理文件名

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

相关推荐
陈陈CHENCHEN7 小时前
【Linux】服务器根目录磁盘扩容操作记录
linux·运维·服务器
这个DBA有点耶8 小时前
数据库教程:从零基础到实战的完整学习路径(2026版)
数据库·程序员·代码规范
forestsea9 小时前
从零构建 Java 智能体 RAG 系统:Milvus 向量数据库实战指南
java·数据库·milvus
沸速存储9 小时前
AI 机器人靠哪些内存与存储驱动整机运行?
服务器·科技·嵌入式硬件·电脑
默 语9 小时前
Java新手入门:从零开始安装JDK并配置环境变量
java·开发语言·python·mysql·group by·1024程序员节·数据去重
probex_10 小时前
从 ByConity 到 VictoriaMetrics:一次指标数据迁移引发的四种存储对比
数据库
用户30745969820710 小时前
MySQL EXPLAIN 零基础完全精通指南:从"看不懂"到"会优化"
mysql
fengyehongWorld10 小时前
Linux squid搭建基础代理服务器
linux·运维·服务器
Patrick在香港10 小时前
Python 审计香港开放数据目录:两个端点差 10 倍,只有 9.3% 的资源标了「最后修改时间」
开发语言·数据库·python·数据分析·api·数据治理·开放数据
这个DBA有点耶10 小时前
自增主键用尽了怎么办?INT溢出、在线迁移与预防策略全解析
数据库·mysql·代码规范