正则表达式

  • 正则表达式已关闭评论
  • 11 次浏览
  • A+
所属分类:linux技术
摘要

正则表达式:REGEXP,REGular EXPression。
正则表达式分为两类:元字符匹配次数


正则表达式

1.正则表达式分类

正则表达式:REGEXP,REGular EXPression。
正则表达式分为两类:

  • Basic REGEXP(基本正则表达式)
  • Extended REGEXP(扩展正则表达式)

2.基本正则表达式

元字符

. 			//任意单个字符 []			//匹配指定单位外的任意单个字符 [^]			//匹配指定范围外的任意单个字符 

匹配次数

*			//匹配其前面的任意单个字符任意次 .*			//任意长度的任意字符 ?			//匹配其前面的任意单个字符1次或0次 + 			//匹配其前面的任意单个字符至少一次 {m,n}		//匹配其前面的任意单个字符至少m次,至多n次 

位置锚定

^ 			//锚定行首,此字符后面的任意单个字符必须出现在行首 $			//锚定行尾,此字符前面的任意单个字符必须出现在行尾 ^$			//空白行 <或b		//锚定词首,其后面的任意单个字符必须作为单词首部出现 >或b		//锁定词尾,其前面的任意单个字符必须作为单词尾部出现 

分组

() 例:(ab)* //后向引用 	1		//引用第一个左括号以及与之相应的右括号所包括的所有内容 	2		//引用第二个左括号以及与之对应的右括号所包括的所有内容 

示例:

//过滤任意单个字符 [root@localhost zxr]# ls 1  2  3  4  5  6  7  8  9 [root@localhost zxr]# ls |grep '^.$' 1 2 3 4 5 6 7 8 9   //匹配指定范围内的任意单个字符 [root@localhost zxr]# ls |grep '^[15]$' 1 5 [root@localhost zxr]# ls |grep '^[1-3]$' 1 2 3  //匹配指定范围外的任意单个字符 [root@localhost zxr]# ls |grep '^[^123]$' 4 5 6 7 8 9  //匹配其前面的任意单个字符任意次 [root@localhost zxr]# ls |grep '^abc*$' abc abccc abccccccc  //匹配任意长度的任意字符 [root@localhost zxr]# ls |grep '^a.*bc$' abbc abc  [root@localhost zxr]# ls |grep '^ab.*c$' abbbbbbbbbcccccccc abbbbbcccccc abbc abbcc abc abccc abccccccc  [root@localhost zxr]# ls |grep '^abc.*$' abc abccc abccccccc  //匹配其前面的任意单个字符1次或者0次 [root@localhost zxr]# ls | grep '^a?b$' ab b  //匹配其前面的任意单个字符至少m次,至多n次 [root@localhost zxr]# ls |grep '^a+bc$' aaaabc abc  //匹配其前面的任意单个字符至少m次,至多n次 [root@localhost zxr]# ls |grep '^a{1,6}bc$' aaaabc abc  //以a开头 [root@localhost zxr]# ls |grep '^a' aaaabc aabbbbbccccc aabbcc abbc abbcc abc abccc  //以c结尾 [root@localhost zxr]# ls |grep 'c$' aaaabbbccc aaaabc abc abccc abccccccc  //锚定词首 [root@localhost zxr]# cat a awswswsw qweasd admin alog loga [root@localhost zxr]# grep '<a' a awswswsw admin alog  //锚定词尾 [root@localhost zxr]# grep 'a>' a loga  //锚定词首,和词尾 [root@localhost zxr]# grep '<admin>' a admin 

3.扩展正则表达式

字符匹配

.       //匹配任意单个字符 []      //匹配指定范围内的任意单个字符 [^]     //匹配指定范围外的任意单个字符  单个字符匹配相关 [[:alpha:]]  表示任意大小写字母。 [[:lower:]]  表示任意小写字母。 [[:upper:]]  表示任意大写字母。 [[:digit:]]  表示0到9之间的任意单个数字(包括0和9)。 [[:alnum:]]  表示任意数字或字母。 [[:space:]]  表示任意空白字符,包括"空格"、"tab键"等。 [[:punct:]]  表示任意标点符号。 [^[:alpha:]]  表示单个非字母字符。 [^[:lower:]]  表示单个非小写字母字符。 [^[:upper:]]  表示单个非大写字母字符。 [^[:digit:]]  表示单个非数字字符。 [^[:alnum:]]  表示单个非数字非字母字符。 [^[:space:]]  表示单个非空白字符。 [^[:punct:]]  表示单个非标点符号字符。 [0-9]与[[:digit:]]等效。 [a-z]与[[:lower:]]等效。 [A-Z]与[[:upper:]]等效。 [a-zA-Z]与[[:alpha:]]等效。 [a-zA-Z0-9]与[[:alnum:]]等效。 [^0-9]与[^[:digit:]]等效。 [^a-z]与[^[:lower:]]等效。 [^A-Z]与[^[:upper:]]等效 [^a-zA-Z]与[^[:alpha:]]等效 [^a-zA-Z0-9]与[^[:alnum:]]等效 

次数匹配

*       //匹配其前面的任意单个字符任意次 ?       //匹配其前面的任意单个字符1次或0次 +       //匹配其前面的任意单个字符至少1次 {m,n}   //匹配其前面的任意单个字符至少m次,至多n次 

位置锚定

^       //锚定行首,此字符后面的任意单个字符必须出现在行首 $       //锚定行尾,此字符前面的任意单个字符必须出现在行尾 ^$      //空白行 <或b       //锚定词首,其后面的任意单个字符必须作为单词首部出现 >或b       //锚定词尾,其前面的任意单个字符必须作为单词尾部出现 

分组

()      //分组 1,2,3,.... 例:(ab)* //后向引用 	1      //引用第一个左括号以及与之对应的右括号所包括的所有内容 	2      //引用第二个左括号以及与之对应的右括号所包括的所有内容 //或者 	|      //or 默认匹配|的整个左侧或者整个右侧的内容 		   //例:C|cat表示C或者cat,要想表示Cat或者cat则需要使用分组,如(C|c)at