Linux - 正则表达式
目录
1. 正则表达式(regular expression)
regular 常规,规则的
expression 表达式,公式
什么是正则?
使用一些特殊字符+字母和或数字按照某个规则组合成一 个公式用来表示某个意思这就叫正则表达式
为什么需要使用它?
查找的场景特别适合使用正则,大海捞针
正则用在哪里?
正则表达式是一种方法,很多命令可以采用这种方法
vim ,grep,sed,awk等都支持正则表达式
######################################################
1.1 元字符
元字符:有特殊含义的字符,可以表示其他的含义
1.1.1 ^ 表示以什么开头
[root@localhost 7.1]# cat sc.html | egrep "^<h1"
<h1>Welcome to sanchuang!</h1>
<h1>三创同乐欢迎您!</h1>
######################################################
1.1.2 $ 表示以什么结尾
[root@localhost 7.1]# cat sc.html | egrep "/p>$"
<p>address: hunan.changsha.furong</p>
<p>teacher feng PhoneNO: 18908495097</p>
<p>teacher feng wechat: 18908495097</p>
######################################################
1.1.3 " . "表示任意单个字符
示例:因为 . 表示任意单个字符,所以
"lizhuofu.{2}" 表示以lizhuofu开头的后面任意两个单个字符
"lizhuofu.{4}" 表示以lizhuofu开头的后面任意四个单个字符
"lizhuofu.{4,6}" 表示以lizhuofu开头的后面任意4 - 6个单个字符
######################################################
1.1.4 *表示前面的字符出现0次或者任意次
.*表示所有的字符
######################################################
1.1.5 |表示或者
######################################################
1.1.6 ^$ 表示空行
######################################################
1.1.7 +表示前面字符出现1次以上
######################################################
1.2 方括号表达式
1.2.1 [abc] 表示 a,b,c任意一个
[abc] = "a|b|c"
######################################################
1.2.2 [a-z] 表示小写字母
######################################################
1.2.3 [A-Z] 表示大写字母
######################################################
1.2.4 [0-Z] 表示数字和字母
######################################################
1.2.5 ^在方括号里面和外面的区别
^在方括号里面表示对字符取反
^在方括号里面表示以某个字符开头
示例:查找不是以数字开头的行
######################################################
1.3 []和 {}组合使用
[0-9]{2} 表示0-9里面可以取2次的意思,随便你取哪一个,取两次
[0-9]{2,5} 表示从0-9里可以取2-5次的数字,随便你取哪个,至少两次,最多取5次
[0-9]{2,} 表示从0-9里可以取两次以上,最少2次
a{2} 表示花括号前面的a连续出现两次
abc{2}表示abc中的c出现2次
######################################################
2.从文本里面过滤出所有邮箱地址
文本:
root@localhost lianxi]# cat mail.txt
wang sheng hu 8898989@qq.com fjdkfjd
fengdeyong@sina.com fjdkfjd
zhao zhao@163.com
yishiying_1213@163.com fjdkfjdkjfk
15、写一个表示邮箱的正则
feng@qq.com changsha
1234feng@163.com fengdeyong
meng.xianhui@yahoo.cn sanchuang
liudehua@sina.com
10001@qq.com
123_ui@12306.cn
qilu@qilu.edu
qilu@qilu.edu/fjdkfjk/fjdk
[root@localhost lianxi]#
字符串1 : a-Z_0-9
字符串2:0-Z
字符串3:a-Z
######################################################
3. 练习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通