- A+
所属分类:linux技术
正则表达式
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