正则表达式

正则表达式:

由一类特殊字符及文本字符所编写的模式类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符。

正则表达式被很多程序和开发语言所广泛支持:vim, less,grep,sed,awk, nginx,mysql等   
 

主要作用 

主要用来匹配字符串(命令结果,文本内容)

通配符只用于匹配文件名、目录名等,不能用于匹配文件内容。(而且是已存在的文件或者目录)

正则表达式是处理文件类容

通配符是用来处理文件名的

常用的通配符

*通配符匹配任意一个或多个字符
匹配一个任意字符
[ ][list] 匹配list中任意单个字符

1.匹配所有以*结尾的字符

2.匹配一个任意字符

 

3. [list] 匹配list中任意单个字符

基本正则表达式

元字符:

.匹配任意单个字符,可以是一个汉字
()使用转义符,只表示\(\)
[^] 匹配指定范围内的任意单个字符,示例:[dn]  [0-9]  []  [a-zA-Z]   [:alpha:]
[[:blank:]] 空白字符(空格和制表符)

.   匹配任意单个字符,可以是一个汉字

t\.t     加了\斜杠他就是.了    \斜杠的意思是转义转回原本的意思就是点

[ ]  匹配指定范围内的任意单个字符,示例:[dn]  [0-9]  []  [a-zA-Z]   [:alpha:]

匹配小写 [a-z]

 

匹配大写 [A-Z]

匹配大小写 [ a-Z]

 [^]  匹配指定范围外的任意单个字符,示例:[^dn] [^a.z]

[^A-Z] 取反 过滤掉A-Z 其他全都要

 ‘t..t’ 点还代表仍以字符

‘r\.\.t’  加了斜杠就代表转义符  这时候点就是点了  就匹配不到了

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

 cat 10.txt  | grep [[:space:]] 10.txt  匹配空格

 表示次数

*匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配
.*任意长度的任意字符,不包括0次,也就是匹配所有
\?匹配其前面的字符出现0次或1次,即:可有可无
\+匹配其前面的字符出现最少1次,即:肯定有且 >=1 次
\{n\}匹配前面的字符=n次
\{n,n\}匹配前面的字符至少m次,至多n次
\{n\}匹配前面的字符至多n次,<=n 
\{n,\}匹配前面的字符至少n次

代表前面的0出现2次

代表前面出现过2次以上

代表前面出现2次以上 5次一下

 表示0次到任意次

.*匹配所有

 

 

实战练习正则表达式

1.把 ifconfig ens33 ip地址 网关 子网掩码  使用正则表达式的方式显示出来

 2.打印自己的QQ邮箱

 3.cat |/etc/fstab  把面#号空格给过滤掉 只要下面4行uuid 号

位置错定

^#行首错定,用于模式的最左侧
$#行尾错定,用于模式的最右侧
^roots   #用于模式匹配整行 (单独一行 只有root)
^ $ #空行

  cat /etc/fstab | grep -v "^#"  |  grep -v  "^s"

 

 分组

分组:()将多个字符捆绑在一起,当作一个整体

或者:\ |

 分组的方式 获得1和2

宽展正则表达式

grep -E 主要用于正则表达式

表示次数

*匹配前面字符任意次
0或1次
+1次或多次
{n}匹配n次
{n,n}至少m,至多n次
{,n}匹配前面的字符至多n次,<=n,n可以为0
{n,}匹配前面的字符至少n次,<=n,n可以为0

使用扩展正则把 ifconfig ens33 ip地址 网关 子网掩码显示出来

把电话号码写入文本中在正则表达式写出来

 025-83346023
0510-8776655
0527-9888899

 

 使用正则表达式匹配手机号码

和上面一样  把手机号码写入文本中

 使用扩展正则表达式匹配邮箱号

方法一 cat 4.txt | grep -E "[a-Z0-9\.]@*"  这个方法可以是可以  但是不严谨

 方法二 这就是这是正确” [0-9a-zA-Z]+\.[a-z]{a-z}{,3}+“

 使用扩展正则表达式匹配

987-123-4567
987 456-1230
(123) 456-7890

 方法一  简单  但不严谨

cat 5.txt  | grep -E "[\(0-9){,3}-]"

 第二种方法 严谨  有点复杂 

grep -E "(\([0-9]+\)|[0-9]+)[ -]?[0-9]+[ -]?[0-9]+" 5.txt

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞翔小怪兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值