正则表达式(5):转义符

  • A+
所属分类:linux基础

在本博客中,"正则表达式"为一系列文章,如果你想要从头学习怎样在Linux中使用正则,可以参考此系列文章,直达链接如下:

在Linux中使用正则表达式

"正则"系列的每篇文章都建立在前文的基础之上,所以,请按照顺序阅读这些文章,否则有可能在阅读中遇到障碍。 

 

此处,我们来认识一个常用符号,它就是反斜杠 "\"

反斜杠有什么作用呢?先不着急解释,先来看个小例子。

 

前文中说过,在正则表达式中,"."代表任意单个字符(如果不明白请回顾前文),比如,可以使用"a.."表示字母a后面跟随了两个任意字符,如下。

正则表达式(5):转义符

正如上图所示,只要字母a后面跟随了两个字符,即可被匹配到,无论后面跟随的两个字符是什么,数字、符号、字母均可。

 

但是,我现在的要求变了, 我只想找出文本中 "以a开头,后面跟随了两个'点'的文本" ,换句话说就是,我想要匹配到上图中文本文件中的第6行。

正则表达式(5):转义符

 

那么,我该怎么办呢?

理论上来说,我想要找出"a点点",应该使用如下命令

正则表达式(5):转义符

但是正如之前的示例一样,"."在正则表达式中代表任意单个字符,所以,"."在正则表达式中,并不能表示"点"本身。

可是,我们现在的需求就是匹配"点"本身,并不希望"."代表其他字符,我只希望"."就代表"点"。

这个时候,就需要用到反斜杠"\"

"\"与正则中的符号结合在一起时,就表示这个符号本身的含义,示例如下

正则表达式(5):转义符

如上图所示,"\."就表示单个"点",我们称反斜杠"\"为转义字符。

 

同理,如果我们想要匹配"*"本身,而不是想要使用"*"表示任意次数,我们可以使用"\*",示例如下。

正则表达式(5):转义符

 

前文中提到过,在基本正则表达式中,"\?"表示其前面的字符出现0次或1次,那么,如果我们想要匹配问号本身,我们应该怎么做呢?

"\?"就已经包含反斜杠了,难道我们要再加一个反斜杠,嘻嘻~不要陷入思维怪圈了,在基本正则表达式中,如果想要匹配问号本身,只需要使用"?"即可,示例如下

正则表达式(5):转义符

 

加号同理,基本正则中,使用"\+"表示匹配前面的字符至少1次,当我们想要匹配加号本身时,直接使用"+"就行了,示例如下

正则表达式(5):转义符

 

在某些时候,我们就是想要匹配反斜杠本身,我们该怎么办呢?没错,在反斜杠前面加上反斜杠就行了,示例如下。

正则表达式(5):转义符

细心如你一定发现了,上例中使用了单引号,而之前的示例中都使用双引号。

此处如果使用双引号将 正则"引起",将会报错,示例如下

正则表达式(5):转义符

 

好了,关于转义符反斜杠就总结到这里,希望能够对你有所帮助。

 

weinxin
我的微信公众号
关注"实用运维笔记"微信公众号,当博客中有新文章时,可第一时间得知哦~
朱双印

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:5   其中:访客  4   博主  1

    • avatar Pearl 2

      讲得很好

      • avatar 2层面巾纸 0

        楼主,哪些情况下使用双引号要报错呢?

        • avatar yanan001 2

          真心佩服感谢楼主,感觉楼主是老师?

            • avatar 朱双印 Admin

              @yanan001 兄弟误会了,不过有培训机构给我打过电话 :mrgreen: ,看来他们也有这种感觉,嘿嘿,常来捧场呀兄弟~~~

                • avatar echo 5

                  @朱双印 看朱兄可以发展副业了哈哈 666