# 正则表达式（5）：转义符

- 10

- A+

所属分类：Linux基础

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

> 在Linux中使用正则表达式

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

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

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

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

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

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

那么，我该怎么办呢？

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

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

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

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

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

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

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

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

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

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

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

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

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

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

我的微信公众号
关注"实用运维笔记"微信公众号，当博客中有新文章时，可第一时间得知哦~
赞 44
赏
分享

- 正则表达式

- 版权声明：本站原创文章，于2017年6月5日09:37:40，由 朱双印 发表，共 996 字。
- 如需转载，请在文章头部注明出处：正则表达式（5）：转义符 | 朱双印博客

正则表达式（7）：扩展正则表达式
正则表达式（6）：基本正则表达式小结
正则表达式（4）：分组与后向引用
正则表达式（3）：常用符号

### 发表评论取消回复

欢迎 pangzi 再次光临！
修改信息

正在提交, 请稍候...
#

昵称*

邮箱*

网址

有回复时邮件通知我

## 目前评论：10 其中：访客 9 博主 1

2. 迷之夏天 3
   回复 2020年4月20日 上午11:41 沙发

   打卡，博主最帅～

4. 临江仙 4
   回复 2020年2月3日 下午7:37 板凳

   哈哈哈哈 思维的怪圈

6. 青子木 0
   回复 2019年12月17日 上午11:56 地板

   能说说grep后面单引号和双引号的区别吗？表示越琢磨越懵

8. 易明 1
   回复 2019年9月21日 下午3:07 4楼

   的确写的很好

10. you8993 1
    回复 2019年1月4日 上午12:21 5楼

    写的很有条理，让我回忆起了忘记了的知识了。
    a=sun
    cat -n bbb
    1 sun
    2 $a
    3 \
    4 end
    [root@localhost ~]# grep “$a” bbb
    sun
    [root@localhost ~]# grep ‘$a’ bbb
    $a
    [root@localhost ~]# grep ‘\\’ bbb
    \
    [root@localhost ~]# grep “\\” bbb
    grep: Trailing backslash
    [root@localhost ~]#
    [root@localhost ~]# grep “\\\\” bbb
    \
    [root@localhost ~]# grep \\\\ bbb
    \
    最后的要四个 \\\\ 配一个 \，
    官方提到ｇｒｅｐ会直接转意＼，　而“”号里面遇到$，\等特殊字符会进行变量替换，博主可以查查相关资料

12. Pearl 2
    回复 2018年9月22日 下午5:01 6楼

    讲得很好

14. 2层面巾纸 0
    回复 2017年10月23日 上午10:28 7楼

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

16. yanan001 2
    回复 2017年6月16日 上午10:18 8楼

    真心佩服感谢楼主，感觉楼主是老师？

    - 朱双印 Admin
      回复 2017年6月16日 上午10:24 1层

      @yanan001 兄弟误会了，不过有培训机构给我打过电话 ~

      - echo 6
        回复 2018年7月28日 下午10:05 2层

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

- 文章目录

×
×
拖拽到此处
图片将完成下载