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