正则表达式

正则表达式

1、正则表达式分类

正则表达式符号
基础正则BRE (Basic RE)^ $ . * .* [] [^] \
扩展正则ERE (Extended RE)121+ () {} ?
Perl语言正则(其他)

2、基础正则

2.1 ^ 以…开头的行

grep '^m' re.txt   #以m开头的行

2.2 $ 以…结尾的行

grep '8$' re.txt   #以8结尾的行

cat -A 显示出文件中的特殊隐藏符号

2.3 ^$ 空行

grep -n '^$' re.txt    #过滤出文件中的空行并显示行号

grep -nv '^$' re.txt    #排除空行

2.4 . 任意一个字符,不匹配空行

grep 'oldb.y' re.txt

grep -o   #显示匹配过程

2.5 \ 转义字符,脱去马甲,打回原形,去掉符号的特殊含义

grep '\.' re.txt    #匹配所有的点

2.6 * 前一个字符连续出现0次或0次以上

grep '0*' re.txt

2.7 .* 一个组合,代表任意字符

grep '^.*am' re.txt    #找到以任意字母开头,知道匹配到am的行

grep '^.*o' re.txt     #正则表示连续出现的时候或者表示所有的时候,正则体现出贪婪性,尽可能多的匹配

2.8 [] 表示匹配任意一个字符

grep -o '[abc]' re.txt    #一个字母一个字母的匹配,匹配所有的abc

grep -o '[abc][abc]' re.txt    #匹配任意两个字母的组合,比如ab/ac/ba/bc/ca/cb

[0-9]    #匹配0-9的数字
[a-z]    #匹配所有的小写字母
[A-Z]    #匹配所有的大写字母
[a-Z]    #匹配所有的英文字母,用不了就用[a-zA-Z]


grep '^[mn]' re.txt    #匹配以m或n开头的行
grep '^mn' re.txt    #匹配以mn开头的行
grep '[.! ]$' re.txt    #匹配以./!/空格结尾的行

grep -o 显示匹配过程

[]会自动去掉符号的特殊含义,不需要使用\进行转义,多与+配合使用

2.9 [^] 相当于取反,排除括号里的内容

grep '[^good]' re.txt    #排除g/o/d/good 这样的字符,取剩下的

3、扩展正则

grep使用-E参数或者egrep支持扩展正则

sed使用-r参数支持扩展正则

awk默认支持扩展正则

3.1 + 前一个字符连续出现1次或一次以上

egrep '[0-9]+' re.txt    #取出数字
egrep '[a-Z]+' re.txt    #取出单词

3.2 | 或者

egrep 'oldboy|linux' re.txt   #匹配oldboy或linux的行

egrep -v '^$|^#' /etc/ssh/sshd_config     #排除空行和注释掉的行
or
grep '^[a-Z]' /etc/ssh/sshd_config

3.3 () 表示一个整体,用于后向引用(sed反向引用)

rpm -qa |egrep '^tree|^sl|^vim'     #检查tree/vim/sl是否安装

使用()可以方便些
rpm -qa |egrep '^(tree|sl|vim)'

3.4 {} a{n,m} 前一个字符最少出现n次,最多出现m次

格式说明
a{n,m}前一个字符最少出现n次,最多出现m次
a{n}前一个字符连续出现n次
a{n,}前一个字符最少出现n次
a{,m}前一个字符最多出现m次
egrep '0{1,4}' re.txt   #匹配0最少出现1次,最多出现4次的行

egrep '[0-9]{17}[0-9X]$'    #匹配身份证号

3.5 ? 前一个字符出现0次或1次

egrep 'go?d' good

不常用

4、Perl部分正则表达式

grep使用-P参数

符号说明
\d[0-9]
\D[^0-9]
\s匹配的空字符 空格 tab
\S与\s相反
\w[0-9a-zA-Z_] 等价于[_[:alnum]]
\W与\w相反
\b匹配单词边界
\t空格
\n回车
\ftab回车tab
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值