linux正则表达式

感谢http://www.oodsnx.com/thread/89.html的支持


介绍:bash shell本身不支持正则表达式,使用正则表达式的是shell的一些命令和工具,如grepsedawk等等
但是bash可以使用正则表达式中的一些元字符实现通配的功能,此时的这些元字符叫通配符。
此时元字符的意义跟正则表达式中元字符的意义就不一样了。 

基本正则表达式中元字符的意义如下:

1.   *      匹配*前面的那一个字符的0次或多次

如hel*o       heo  helo  hello  helllo  ......

2.   .     匹配任意一个字符(只匹配一个,可以是空格)

如ab.         abc  abd   ab3   ab   ......

3.   ^     匹配行首,行首的字符序列必须是^后的字符序列

如^suda       sudahuhuhuuuuuhuuh      sudaokokokokokoko   ......

4. $   匹配行尾,行尾的字符序列必须是$前的字符序列

 
如suda$ jijijisuda lijhuhsuda ......

特殊的:

1、  ^$      匹配一个空行

2、 ^.$      匹配只有一个字符的空行

5.    []          匹配字符集合中的任意一个字符(只匹配一个)

[1234]  [1-4]             匹配1234的任意一个字符

注意:^放在[]里面时,不再表示匹配行首,而是取反的意思

特殊的:

[^1234]  [^1-4]       匹配不是1234的任意一个字符

[a-z][A-Z]* 匹配任意一个英文单词

6.   \     用于转义元字符,使之成为普通字符

*       此时*表示一个普通字符

7.{}系列符号

{n}       匹配前面字符的n次

{n}      匹配前面字符的至少n次

{nm}     匹配前面字符的n-m次,至少n次,至多m次

如JO{3}B    匹配JOOOB

如JO{3}B   匹配JOOOB  JOOOOB   ……

如JO{36}B  匹配JOOOB  JOOOOB   JOOOOOB   JOOOOOOB   

扩展的正则表达式中元字符的意义如下:

1.    ?    匹配前面的那一个字符的0次或1次

如JO?B      匹配   JB     JOB    JOOB

2.    +     匹配前面的那一个字符的1次或多次

如JO+B      匹配   JOOB   JOOOB   ……

3.    |与()通常结合使用,表示一组可选的字符集合

如re(a|o|e)d     匹配read  reod  reed,等同于re[aoe]d     

通配中的元字符的意义如下: 

1.     *       表示任意多的任意字符 

2. ? 表示一个任意字符

3. ^ 表示取反

4. [] 同正则表达式的用法

5. {} 表示一组表达式的集合

注意:{}中表达式是或的关系 

ls -l  {.cpp  [1234].c}          意思是列出满足表达式.cpp或者[1234].c的文件。

这里写图片描述


阅读更多
个人分类: linux
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭