linux之正则表达式

    正则表达式是一个描述一组字符串的模式,有许多普通字符和元字符组成的字符集。正则表达式的主要作用就是进行文本搜索和字符串处理的,一个正则表达式匹配一个字符或字符串。

    正则表达式的字符集种类:

    

字符集名称含义
[:alnum:]匹配字母和数字字符;等同于A-Z,a-z,0-9
[:digit:]匹配数字0-9
[:alpha:]匹配所有字母含A-Z,a-z
[:lower:]匹配所有小写字母a-z
[:upper:]匹配所有大写字母A-Z
[:space:]匹配空白字符

    基本正则表达式的元字符:

元字符类型含义
举例
.匹配除换行符外任意一个字符112.将匹配112+至少一个字符如1122、112d,但不匹配112
[]匹配任意范围内单个字符[ABC]将匹配字符A、B、C中任意一个;[a-z]将匹配所有小写字母中的任意一个;
[^]匹配任意范围外单个字符[^ABC]将匹配字符除了A、B、C的任意一个字符
*匹配其前面的字符串或正则表达式任意次包括0次如112*将匹配112+多个或0个2,如112、1122、1122222等
\?匹配0次或一次其前面的字符串,其前面的字符可有可无如112\?将匹配11、11211
\{m\}具体匹配其前面的字符要m次he\{3\}匹配heee
\{m,n\}具体匹配其前面的字符要在m次与n次之间he\{0,3\}匹配heee、hee、he、h
\{m,\}匹配其前面的字符最少n次he\{3,\}匹配heee、heeeee等
\{0,m\}匹配其前面的字符最多n次he\{0,1\}匹配h、he
.*任意长度任意字符a.*b匹配所有以a开头b结尾的字符串
^行首匹配,指定字符必须出现在行首^root只匹配以root开头的行
$行尾匹配,指定字符必须出现在行尾/bash$匹配以"/bash"结尾的行
^$空白行
\< \b词首锚定,写在单词最左端\<abc
\>  \b词尾锚定,写在单词最右端abc\>
\(\)分组,分组中的模式匹配到的内容,可由正则表达式引擎记忆在内存中,之后可被引用\(ab\)*
\#
引用,表示对分组中的内容进行#次引用

 


扩展正则表达式:

 

. [] [^]含义与基本正则表达式一样

* ? {m}{m,}

{m,n} {0,m}

与基本正则表达式一样,只是?和{}无需\进行符号转义
+匹配前面的字符至少一次
^ $ \<  \b  \>与基本正则表达式一样,同样分别表示行首、行尾、词首和词尾锚定
()
表示分组的意思
|或者表示选择关系
^$表示空白行,等同^[[:space:]]*$

 

常用的搜索命令:grep、egrep

  命令常用参数:

-v反向匹配,显示没有匹配到的行
-o仅显示匹配的字串,而非字串所在的行
-i忽略字符大小写
-E支持使用扩展正则表达式
-A#显示匹配行的后面指定数目行
-B#显示匹配行的前面指定数目行
-C#显示匹配行的前后指定相同数目行

  实例:

1、显示/etc/passwd中的root账户信息,可以看出^符号的作用了

 技术分享


 


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。