正则表达式

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

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

通配符:用来处理文件名

正则表达式(支持的工具: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 "\\b\[0-9\]\\{6,12\\}\\b" ### 表示邮箱 echo "zhou@qq.com" \|grep -E "\[\[:alnum:\]_\]+@\[\[:alnum:\]_\]+\\.\[\[:alnum:\]_\]+" ### 表示手机号 echo "13705173391"\|grep -E "\\b1\[3456789\]\[0-9\]{9}\\b"

相关推荐
JIngJaneIL28 分钟前
专利服务系统平台|个人专利服务系统|基于java和小程序的专利服务系统设计与实现(源码+数据库+文档)
java·数据库·小程序·论文·毕设·专利服务系统平台
__风__1 小时前
windows 上编译PostgreSQL
数据库·postgresql
木木子99991 小时前
数据库范式
数据库
涛思数据(TDengine)1 小时前
通过最严时序标准,再登产业图谱榜首,TDengine 时序数据库在可信数据库大会荣获双荣誉
大数据·数据库·时序数据库·tdengine·涛思数据
涛思数据(TDengine)1 小时前
新客户 | TDengine 时序数据库是怎么在钢厂“撬动”PI 的?
大数据·运维·数据库·时序数据库·tdengine
程序员柳2 小时前
基于Flask + Vue3 的新闻数据分析平台源代码+数据库+使用说明,爬取今日头条新闻数据,采集与清洗、数据分析、建立数据模型、数据可视化
数据库·数据分析·flask
楠目2 小时前
Shell脚本实现自动封禁恶意扫描IP
服务器·网络·tcp/ip
哈基米喜欢哈哈哈3 小时前
Uber的MySQL实践(一)——学习笔记
数据库·笔记·后端·mysql
编程研究坊3 小时前
Neo4j APOC插件安装教程
数据库·人工智能·python·neo4j
哥哥还在IT中3 小时前
脚本统计MongoDB集合结构信息
数据库·mongodb