(9.1)正则表达式RE

1.重要的文本处理工具

  • 对文本处理的:vim,sed,对文本进行过滤和截取的awk,以及grep都会用到正则
  • 正则表达式:
    正则表达式regular expression,RE,是一种字符模式,用于在查找过程中匹配的指定的字符。
    在大多数的程序里,正则表达式都被置于两个正斜线之间,eg:/[oO]ve/就是由正斜杠界定的正则表达式 ,它将匹配被查找的行中任何位置出现的相同模式
    在正则表达式中,元字符是最重要的概念
  • eg:
匹配数字: ^[0-9]+$   
123
##[]范围中的一个数字,+表示前面的对象出现1次或者多次

匹配Mail
[a-z0-9_]+@[a-z0-9]+\.[a-z]+
jiwangreal@163.com
##\.这里的\表示转义,.的意思类似于shell中的?,表示任意单个字符

匹配IP
[0-9]{1,3}\.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}
##[0-9]{1,3}表示数字0-9出现1-3次数

2.正则表达式元字符

  • 基本表达式的元字符,注意里面有[ ],( ),{ }
    .*是匹配多个字符,匹配任意一行
    在这里插入图片描述
    eg1:grep ‘^\ <root\ >’ /etc/passwd 表示以root开头的单词
    在这里插入图片描述
    eg2:
grep '^root' /etc/passwd		表示以root开头的
grep '^[rc]oot' /etc/passwd		表示以r或者c开头的
grep '^[^rc]oot' /etc/passwd		表示不以r或者c开头的

^在[]里面表示取反,不要
^在[]外面表示以谁开头


\转移字符会让这些元字符失去作用,让其还回原意。
love\.		表示只匹配love.

\(..\)在vim里面用的多:
:% s/10.16.130.1/172.16.130.5/		表示将172.16.130.1替换成172.16.130.5
:% s/\(172.16.130.\)1/\15/		表示将172.16.130.1替换成172.16.130.5,其中\1代表\(172.16.130.\)的内容
:3,9s/\(.*\)/#\1/		表示将3-9行给注释掉

eg3:下面第一个表示o出现2次
在这里插入图片描述

  • shell里面不区分大小写:ll l[a-z]ve
    在这里插入图片描述

3.扩展正则表达四元字符

  • egrep支持扩展元字符,grep不支持扩展元字符
    在这里插入图片描述

eg:ss -an|egrep ‘:80|:20\ >’
在这里插入图片描述

4.前导符总结:*,?,+,{}

  • 下面的符号都是对前面的符号负责,用红色已经标记出来了,后面的表示匹配的次数
    在这里插入图片描述

5.POSIX字符类

在这里插入图片描述

5.正则匹配eg:vim

/love/		匹配love
/^love/		匹配以love开头的行
/love$/		匹配love结尾的行
/l.ve/		匹配l任意字符ve
/lo*ve/		匹配l零到多个o可能没有o的ve
/[Li]ove/	匹配Love或love
/love[a-z]/	匹配love后面跟着小写字母
/love[^a-zA-Z0-9]/		匹配love非字符

/.*/		匹配整行,匹配任意一行
/^$/		匹配空行
/^[A-Z]..$/		注意这里匹配的是3个字符
/^[A-Z][a-z]*3[0-5]/		匹配A-Z开头的,零到任意多个的a-z字符的,再接着跟着3以及0-5字符
/[a-z]*\./		匹配零到多个小写字母,后面跟着.
/^ *[A-Z][a-z][a-z]$/			匹配零到多个空格开头的,跟着[A-Z][a-z][a-z]结尾的行
/^[A-Za-z]*[^,][A-Za-z]*$/		匹配零到多个英文字母开头,跟着一个非逗号,再跟着一个字母结尾的
/\<fourth\>/			匹配fourth
/\<f.*th\>/			匹配以f开头,th结尾的单词
/5{2}2{3}\./		匹配5出现2次

空行,即换行符和回车
/^$/
/^[ \t]*$/ 			零个或多个空格或tab

注释行
/^#/
/^[ \t]*#/
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

喜欢打篮球的普通人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值