正则表达式基础
在很多文本编辑器中,正则表达式通常被用来检查替换那些符合某个模式的文本!
一、正则表达式基础
1.基本语法
①选择:|
eg:boy|girl 表示选择boy或者是girl
②数量限定:*,+,?,.
+:表示+前面的字符可以出现至少一次
eg:goo+gle 符合的有:google,gooogle ggoogle等
*:表示*前面的字符可以不出现或者多次出现
eg:colou*r 符合的有:cor,coloour等
?:表示?前面的字符最多可以出现一次
eg:colou?r 符合的有:color,colur,cr等
.:表示.匹配出了\n之外的任何单字符
eg:colou.r 符合的有:coloucr,colou1r等
③范围和优先级:()
eg:gr(a|e)y 表示为gray|grey
eg:(grand)?father 表示为grandfather,father
④语法
^:匹配输入字符串的开始位置
$:匹配输入字符串的结束位置
\:转义字符一样的用法
{n}:匹配确定的n次 eg:o{2} 匹配的就是 food等
{n,}:至少有n个匹配的
{n,m}:最少匹配n次,最多匹配m次
*:表示*前面的可以不出现也可以出现多次
+:表示+前面的至少出现一次
?:表示?前面的最多出现一次
?与任意限制符匹配时则表示非贪婪匹配
x|y:表示匹配x或者y
[xyz]:表示匹配x或者y或者z
[^xyz]:表示匹配未列出的任意字符,例如非x,y,z
[a-z]:表示匹配指定范围内的任意字符
[^a-z]:表示匹配任何不在指定范围内的任意字符
二、grep模式匹配命令
grep支持三种正则表达式引擎,分别的参数是:
-E:POSIX扩展正则表达式,ERE
-G:POSIX基本正则表达式,BRE
-P:Perl正则表达式,PCRE
1.基本操作
grep参数:
-b:二进制文件
-c:模式匹配数目
-i:忽略大小写
-n:行号
-v:反选
-r:递归
-A n:匹配模式后面n行
-B n:匹配模式前面n行
--color=auto 自动颜色显示
2、使用正则表达式 BRE
①位置:
eg:grep ‘shiyanlou’ /etc/group
②数量:
eg:echo 'zero\nzo\nzoo' | grep 'z.*o'
③选择:
eg:echo '1234\nabcd' | grep '[a-z]'
与'[a-z]'意思相同的是'[[:lower:]]'
与'[0-9]'意思相同的是'[[:digit:]]'
与'[A-Z]'意思相同的是'[[:upper:]]'
表示字母和数字的是'[[:alnum:]]'
表示字母的是'[[:alpha:]]'
表示空白键和[Tab]按键的是'[[:blank:]]'
表示空白字节之外的其他所有按键是'[[:graph:]]'
3.使用正则表达式 ERE
①数量:
eg:echo'zero\nzo\nzoo' | grep -E '{zo{1}}'
表示zo开头且只出现一次的。
②选择:
eg:echo 'w.shiyanlou.com\nw.baidu.com\nw.google.com' | grep'w\.(shiyanlou|baidu)\.com'
输出的结果为:
w.shiyanlou.com
w.baidu.com