shell的正则表达式的"+","?","."
2017-11-23 本文已影响0人
llicety
这里只想强调"+","?","."这三个
"+"
匹配一个或多个前面紧挨着+的那一个字符。如:“gr+”,匹配一个g后面加一个r或者多个r的gr的字符串,比如grr,其实"gr+"看成g(r+)就更好理解了。
image.png
截图中的ggr中的第一个g并不是红色,说明了"+"只代表一个或者多个"+"前面的紧挨着"+"的那一个字符,即r,而不代表一个或者多个"gr",或者是"g"和"r"
"?"
匹配零个或一个前面紧挨着?的那一个字符。如:'gr?',匹配一个g后面接0个或者一个r的字符串,比如g (0个r)或者gr (1个r),同理"gr?"看成g(r?)就更好理解了。。
image.png
看到上面的那个图,可能就会有人问,为什么ggr是也被匹配上了。那么看下面这个图面你应该就会明白为什么ggr是红色,也被匹配上了。
image.png
其实ggr是两个匹配结果,匹配了一个g 和一个gr,只是他们恰好在一块儿,看似是匹配了ggr。
"."
匹配一个非换行符的字符,跟它前后的字符没有任何关系,就代表一个非换行字符
image.png
其实就是gr.+在这里和grr......以及gr.{6}是一样的,但是看完下一个图,也许又懵逼了
image.png
为什么全红了,都匹配上了,刚刚不是说"."只代表一个非换行字符么,一个喔!其实这里是匹配了一个g,一个r,一个e等等,所有的都是单个匹配上的,只是他们连着显示的,感觉像是匹配了gregrrep一个整体。也就是gregrrep中的任何一个字符都和"."匹配。