正则表达式

为了更好的处理文本的一种表达式,其匹配方式分为“文本字符”匹配和“元字符”匹配
正则表达式,相对于通配符而言,是一种精确匹配

元字符

  • 正则表达式可分为基本正则表达式(BRE)和扩展正则表达式(ERE)
  • 基本正则表达式(regexp)的元字符比扩展正则表达式的元字符少
  • 基本正则表达式的元字符包括.(点字符) ^(开头) $(结尾) [](匹配其中任意一项) - (连字符)*(限定符,0次或多次)
  • 扩展表达式元字符,包含所有的基本表达式元字符,并包含下述元字符|(或) ?(限定符,0次或1次) +(限定符,一次或多次) {}(限定符,指定范围的次数) ()(就是在元字符中起括号的作用)
  • 扩展元字符要在基本元字符中使用,需要转移\
  • 使用扩展正则表达式(regex),若是grep,需要加参数-E
元字符意义
.匹配除“\r\n”之外的任何单个字符
^行的开头
$行的结尾
[]匹配其中任意一个字符
()在和元字符组合时,起括号正常的意思。在基本正则表达式中使用是需要转义的
-在[]中表示连字符
\转义
|
?限定符,匹配0次或1次
*限定符,匹配0次或多次
+限定符,匹配1次或多次
{}限定符,匹配指定范围的次数
\d数字字符,等价于[0-9]
\w大小写字母,下划线和数字,等价于 [a-zA-Z0-9_]

元字符-[]

  • 特殊字符在这里将失去其特殊意义
  • ^在第一位,表示否定
  • -在[]表示连字符
    元字符-{}
  • {m} 前面出现的内容匹配m次
  • {m,n} 前面的内容匹配m到n次
  • {m,} 前面出现的内容出现次数大于m次
  • {,n} 前面的内容出现次数小于n次
# 匹配小写字母开头,且结尾是.txt,中间包含0个或多个字母
# 通过例子可看到+元字符在普通正则表达式中是需要转义的
# ^ 表示开头
# $ 表示结尾
# [[:lower:]] 所有的小写字母
# [a-z] 同样表示所有的小写字母,但是仅在ASCII中失效,对于美国字典排序不生效
# . 在正则表达式中需要转义
[dps@ccod131 bak]$ ls | grep '^[[:lower:]][a-z]\+\.txt$'
aa.txt
awk.txt
bb.txt
err.txt
file.txt
# 和上面的例子一样,但是元字符(+)在扩展正则表达式中是不需要转义的
# 参数-E表示扩展正则表达式
[dps@ccod131 bak]$ ls | grep -E '^[[:lower:]][a-z]+\.txt$'
aa.txt
awk.txt
bb.txt
err.txt
file.txt
# {}表示限定次数
[dps@ccod131 bak]$ ls | grep -E '^[[:lower:]][a-z]{2}\.txt$'
awk.txt
err.txt
# 这里匹配一个文件名包含(一个或多个a)或(一个或多个b),且以.txt结尾
[dps@ccod131 bak]$ ls | grep '^[ab]\+\.txt'
aa.txt
bb.txt
# ^ 在{}中表示否定,这里匹配一个文件名不是由(一个或多个a)或(一个或多个b)组成,但以.txt结尾的文件
[dps@ccod131 bak]$ ls | grep '[^ab]\+\.txt'
awk.txt
err.txt
file.txt
test11.txt
test_eof.txt

参考链接:https://github.com/CyC2018/CS-Notes/blob/master/notes/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F.md
https://github.com/CyC2018/CS-Notes/blob/master/notes/Linux.md
https://github.com/CyC2018/CS-Notes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值