Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Linux正则表达式初入门

了解Linux正则表达式之前,需要了解Linux中通配符和正则的区别:通配符主要用于bash环境,而正则大多数用于Linux三剑客(grep、sed、awk)等中…且Linux中的正则又和其他开发环境下的正则有所区别,咱们暂时研究的还只是Linux环境下的正则…通配符基础
通配符描述示例
*任意多个字符find . *.sh
代表任意一个字符find . ?.sh
连续不同命令分隔ls m1;ls m2
#配置文件注释####crontab####
|管道符find . -type f -name "*.txt" | xargs rm -f
~用户的家目录oldboy~
-上一次操作目录su -
$变量符号$PATH   
//
>重定向echo “linux”>oldboy.sh
>>追加重定向echo “linux”>>oldboy.sh
<输入xargs –n 2 <oldboy.txt
<<输入重定向xargs –n 2 <<oldboy.txt
单引号所见即所得echo ‘date’==>date
双引号变量置换echo “date”==>datenum=3
echo “$num”==>3 
`相当于$()ls  ==>oldboy.sh
echo `ls`==>oldboy.sh 
{]内容序列touch m{1..10}
cp file{,.bak}
取反find .  -type f ! -name  "*.sh"
&&并且&&
||或者||
 正则表达式基础组成
正则表达式描述示例
^匹配行首^abc 匹配以abc开头的行 
$匹配结尾def$  匹配以def结尾的行
.任意一个字符a.c  匹配abc、adc等
转义字符,还原字符本身含义. 代表点本身
*重复0个或者多个前一个字符o*  代表0个o或者多个o
.*任意字符^.* 代表以任意字符开头
[abc]匹配字符集合里的任意一个字符[a-z][A-Z][0-9] 任意a-z,A-Z,0-9
[^abc]匹配不包含^后的所有字符[^abc]  不包含abc的所有字符
a{n,m}
a{n,}
a{n}
匹配重复n到m次a字符
重复至少n次
只重复n次
0{0,3} 0重复了0-3次
0{3,}重复至少3次0
0{3}只重复3次0
()创建一个用于匹配的子串ma(tri)?匹配max或maxtrix
 扩展的正则表达式(grep –E 或者 egrep)
正则表达式描述示例
+匹配1个或者多个
(*是0个或者多个)
a+  匹配1个到多个a
匹配0个或者一个
(.是只有一个)
a? 匹配0个a或者1个a
|同时过滤多个字符grep –E “3306|1521” /etc/services
 元字符元字符(meta character)是一种Perl风格的正则表达式,只有一部分文本处理工具支持它,并不是所有的文本处理工具都支持。
正则表达式描述示例
单词边界cool 匹配cool,不匹配coolant
B非单词边界coolB 匹配coolant,不匹配cool
d单个数字字符bdb 匹配b2b,不匹配bcb
D单个非数字字符bDb 匹配bcb,不匹配b2b
w单个单词字符(字母、数字与_)w 匹配1或a,不匹配&
W单个非单词字符W 匹配&,不匹配1或a
换行符 匹配一个新行
s单个空白字符xsx 匹配x x,不匹配xx
S单个非空白字符xSx 匹配xkx,不匹配xx
回车 匹配回车
横向制表符 匹配一个横向制表符
v垂直制表符v 匹配一个垂直制表符
f换页符f 匹配一个换页符
 POSIX字符类POSIX字符类是一个形如[:...:]的特殊元序列(meta sequence),他可以用于匹配特定的字符范围
正则表达式描述示例
[:alnum:]匹配任意一个字母或数字字符[[:alnum:]]+
[:alpha:]匹配任意一个字母字符(包括大小写字母)[[:alpha:]]{4}
[:blank:]空格与制表符(横向和纵向)[[:blank:]]*
[:digit:]匹配任意一个数字字符[[:digit:]]?
[:lower:]匹配小写字母[[:lower:]]{5,}
[:upper:]匹配大写字母([[:upper:]]+)?
[:punct:]匹配标点符号[[:punct:]]
[:space:]匹配一个包括换行符、回车等在内的所有空白符[[:space:]]+
[:graph:]匹配任何一个可以看得见的且可以打印的字符[[:graph:]]
[:xdigit:]任何一个十六进制数(即:0-9,a-f,A-F)[[:xdigit:]]+
[:cntrl:]任何一个控制字符(ASCII字符集中的前32个字符)[[:cntrl:]]
[:print:]任何一个可以打印的字符[[:print:]]
Linux 基础入门教程----正则表达式基础   http://www.linuxidc.com/Linux/2015-08/121441.htmLinux正则表达式sed 详述  http://www.linuxidc.com/Linux/2015-04/116309.htmLinux正则表达式特性及BRE与ERE的区别 http://www.linuxidc.com/Linux/2014-03/99152.htmgrep使用简明及正则表达式 http://www.linuxidc.com/Linux/2013-08/88534.htm正则表达式的用法 http://www.linuxidc.com/Linux/2013-03/81897.htm正则表达式之零宽断言 http://www.linuxidc.com/Linux/2013-03/81897.htmLinux中正则表达式与文件格式化处理命令(awk/grep/sed) http://www.linuxidc.com/Linux/2013-03/81018.htm基础正则表达式 http://www.linuxidc.com/Linux/2014-09/106296.htm常用正则表达式整理 http://www.linuxidc.com/Linux/2014-10/108076.htm本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-07/133627.htm