正则表达式和通配符的本质区别

  1. 不需要思考的判断方法:在三剑客awk,sed,grep,egrep都是正则,其他都是通配符

         2.区别通配符和正则表达式最简单的方法:

        (1)文件目录名===>通配符
                  (2)文件内容(字符串,文本【文件】内容)===>正则表达式

           注意:在匹配模式中一定要加上引号

符号

描述

实例

备注

.

匹配任意单个字符(必须存在)

l..e可以表示lovelikeleee等,但不可以表示labcdelelee等。

cat  /etc/passwd |grep “r..t”

^

匹配前面字符串开头

匹配以abc开头的行:echo -e “abc\nxyz” |grep ^anc

cat  /etc/passwd |grep “^set”

$

匹配前面字符串结尾

匹配以xyz结尾的行:echo -e “abc\nxyz” |grep xyz$

cat  /etc/pssswd |grep “bash$”

*

匹配前一个字符的零个或多个

a*表示出现任意个a的情况

a*b表示 b前面有任意个a的情况(包括没有a的情况)

cat  /etc/passwd |grep “ro*t”

 

结果:既有root也有rt

.*

表示任意长度的任意字符

a.*b表示ab之间有无数个点(.

cat  /etc/passwd |grep “a.*b”

 

+(扩展正则)

表示其前面的字符出现最少一次的情况

匹配 abc 和 abcc:

echo -e "abc\nabcc\nadd" |grep -E 'ab+'

匹配单个数字:echo "113" |grep -o '[0-9]'

连续匹配多个数字:echo "113" |grep -E -o '[0-9]+'

 

 

?(扩展正则)

表示其前面的字符出现最多一次的情况(可以0个)

匹配 ac 或 abc:

echo -e "ac\nabc\nadd" |grep -E 'a?c'

 

 

[]

表示范围内的任意一个字符

匹配所有字母

echo -e "a\nb\nc" |grep '[a-z]'

 

 

[^]

匹配中括号之外的任意一个字符

匹配所有字母

echo -e "a\nb\nc" |grep '[a-z]'

 

 

^[^]

匹配不是中括号内任意一个字符开头的行

匹配不是#开头的行:

grep '^[^#]' /etc/httpd/conf/httpd.conf

 

 

{n}或者{n,}

匹配花括号前面字符至少n个字符

echo "aadadccc" | egrep "a{2}"

echo "aadadccc" | egrep "a{1}"

 

 

{n,m}

匹配花括号前面字符至少 n个字符,最多 m 个字符

"ac\{2,5\}b" 匹配a和b之间有最少2个c最多5个c的行

"ac\{,5\}b" 匹配a和b之间有最多5个c的行

"ac\{2,\}b" 匹配a和b之间有最少2个c的行

 

 

\<

锚定单词首部(单词一般以空格或特殊字符做分隔)

#echo" hi,root,iamroot" | grep "\<root"

 

\>

 锚定单词尾部(单词一般以空格或特殊字符做分隔,)

#echo "hi,root,iamroot" | grep "root\>"

 

()

\1  调用前面的第一个分组

例子:过滤出一行中有两个相同数字的行

# grep "\([0-9]\).*\1"

 

 

|(扩展正则)

匹配竖杠两边的任意一个

例子:过滤出cat 或者Cat

# grep "cat|Cat" a.txt

# grep "(C|c)at" a.txt

 

 

 

注意:1.正则表达式中的{}以及()都需要加上\进行转义,而扩展正则表达式不需要

           2.|, ?,+是扩展正则独有的

           3.锚定单词首部和尾部在扩展正则以及正则中都需要加上\

 

 

[:space:]

匹配任意空白字符,等效\t\n\r\f\v

                                                                                                                                注意:使用这些字符的时候需要在外面还要加一个[]括号

posted on 2019-02-23 13:52  ♠️黑桃"凯"  阅读(161)  评论(0编辑  收藏  举报