- A+
在本博客中,"正则表达式"为一系列文章,如果你想要从头学习怎样在Linux中使用正则,可以参考此系列文章,直达链接如下:
"正则"系列的每篇文章都建立在前文的基础之上,所以,请按照顺序阅读这些文章,否则有可能在阅读中遇到障碍。
此处,我们来认识一个常用符号,它就是反斜杠 "\"
反斜杠有什么作用呢?先不着急解释,先来看个小例子。
前文中说过,在正则表达式中,"."代表任意单个字符(如果不明白请回顾前文),比如,可以使用"a.."表示字母a后面跟随了两个任意字符,如下。
正如上图所示,只要字母a后面跟随了两个字符,即可被匹配到,无论后面跟随的两个字符是什么,数字、符号、字母均可。
但是,我现在的要求变了, 我只想找出文本中 "以a开头,后面跟随了两个'点'的文本" ,换句话说就是,我想要匹配到上图中文本文件中的第6行。
那么,我该怎么办呢?
理论上来说,我想要找出"a点点",应该使用如下命令
但是正如之前的示例一样,"."在正则表达式中代表任意单个字符,所以,"."在正则表达式中,并不能表示"点"本身。
可是,我们现在的需求就是匹配"点"本身,并不希望"."代表其他字符,我只希望"."就代表"点"。
这个时候,就需要用到反斜杠"\"
"\"与正则中的符号结合在一起时,就表示这个符号本身的含义,示例如下
如上图所示,"\."就表示单个"点",我们称反斜杠"\"为转义字符。
同理,如果我们想要匹配"*"本身,而不是想要使用"*"表示任意次数,我们可以使用"\*",示例如下。
前文中提到过,在基本正则表达式中,"\?"表示其前面的字符出现0次或1次,那么,如果我们想要匹配问号本身,我们应该怎么做呢?
"\?"就已经包含反斜杠了,难道我们要再加一个反斜杠,嘻嘻~不要陷入思维怪圈了,在基本正则表达式中,如果想要匹配问号本身,只需要使用"?"即可,示例如下
加号同理,基本正则中,使用"\+"表示匹配前面的字符至少1次,当我们想要匹配加号本身时,直接使用"+"就行了,示例如下
在某些时候,我们就是想要匹配反斜杠本身,我们该怎么办呢?没错,在反斜杠前面加上反斜杠就行了,示例如下。
细心如你一定发现了,上例中使用了单引号,而之前的示例中都使用双引号。
此处如果使用双引号将 正则"引起",将会报错,示例如下
好了,关于转义符反斜杠就总结到这里,希望能够对你有所帮助。

2020年4月20日 上午11:41 沙发
打卡,博主最帅~
2020年2月3日 下午7:37 板凳
哈哈哈哈 思维的怪圈
2019年12月17日 上午11:56 地板
能说说grep后面单引号和双引号的区别吗?表示越琢磨越懵
2019年9月21日 下午3:07 4楼
的确写的很好
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
\
最后的要四个 \\\\ 配一个 \,
官方提到grep会直接转意\, 而“”号里面遇到$,\等特殊字符会进行变量替换,博主可以查查相关资料
2018年9月22日 下午5:01 6楼
讲得很好
2017年10月23日 上午10:28 7楼
楼主,哪些情况下使用双引号要报错呢?
2017年6月16日 上午10:18 8楼
真心佩服感谢楼主,感觉楼主是老师?
2017年6月16日 上午10:24 1层
@yanan001 兄弟误会了,不过有培训机构给我打过电话
~
2018年7月28日 下午10:05 2层
@朱双印 看朱兄可以发展副业了哈哈 666