正则表达式的学习与正确使用

正则表达式的学习与正确使用

正则表达式的基本作用是:搜索文本。

搜索字符的3种方式:
1、精确搜索(需要预先知道要搜索内容的准确内容)
2、通配符搜索(使用具有特殊含义的符号代替模糊内容,比精确搜索更加灵活,但是预定义的符号受限)
3、正则表达式搜索(预定义的符号更多,搜索起来更加灵活,这些特殊字符在正则表达式中称为元字符,即预定义好的具有特殊含义的符号,这些符号能够进行通配)

学习正则表达式本质就是学习各种各样的元字符并记住这些元字符的含义。所以正则表达式有以下两个特点:可读性差和编写容易

正则表达式的分类:
基础正则表达式(BRE)
扩展正则表达式(ERE)
编程语言支持的正则表达式

BRE 和 ERE 语法基本一致,只有部分元字符需要区别对待。
在ERE中,以下字符可以直接使用? + { } | ( ), 但是在BRE中需要在其前面加上反斜杠进行转义。

grep、sed命令默认使用基础正则表达式
grep -E、sed -r、egrep、awk命令使用的是扩展正则表达式

grep -E 'pattern' filename

pattern位置为正则表达式,该行命令的意思是从名为 filename 的文件中每读取一行数据都使用正则表达式进行匹配

cmd | grep -E 'pattern'

对命令中输入的数据进行正则表达式匹配,例如echo "hello world" | grep -E "world"

匹配字符

反斜杠序列

\n :匹配换行符
\t :匹配制表符
shell 中的制表符可以通过组合键 ctrl + v +i 来输入。
grep 命令不支持 '\t'

\w :匹配单词字符
单词(word),在正则表达式中的含义是 [a-zA-Z0-9_] 组成的字符或字符串都是单词,例如 nihao, hello world_ 第一个单词是 nihao ,第二个单词是 hello ,第三个单词是 world_

\W :匹配非单词字符
\s :匹配空白字符
\S :匹配非空白字符
\d :匹配数字
\D :匹配非数字
. :表示匹配任意单个字符

中括号表达式

[abcde...] :匹配中括号内的任意单个字符

ubuntu@ubuntu:~$ echo "hello world" | grep -E h[abcde]
hello world
# 当h和h匹配成功后,e则从h后面的字符中继续匹配;
# 但当e与[]匹配成功后,下一个字母l会重新开始匹配,即l首先会和h对比,匹配失败。
ubuntu@ubuntu:~$ echo "hello hello" | grep -E h[abcde]
hello 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值