- 正则表达式概念
正则表达式的文法分为3种标准:BRE、ERE 和 ARE。其中 BER 和 ERE 属于 POSIX 标准,ARE 则是由各家定义的扩展
BRE:基本正则表达式
ERE:在BRE基础上,扩展正则表达式
什么是POSIX呢,POSIX Portable Operating System Interface 可移植操作系统接口, (BRE, ERE)的应用。
正则表达式的基本字符匹配:特殊字符(meta character 元字符)和一般字符。
什么是元字符:特殊意义的专用字符(如"*","+","?","."等),用一个或者一组元字符代替一个或多个字符。举个例子: 元字符*用来匹配0个或多个的前一字符;而元字符. 用来匹配一个任意的一个字符
什么是一般字符:原义正常文本字符(非元字符),例如:'*grep' 匹配所有一个或多个任意字符后紧跟grep,grep就是一般字符。
- 常见linux命令及他们默认使用的正则表达式类型
|
grep |
sed |
vi |
egrep |
awk |
BRE |
* |
* |
* |
|
|
ERE |
|
|
|
* |
* |
- grep: 加上-E,开启ERE模式
- BRE和ERE 都支持的元字符
字符 |
BRE/ERE |
模式含义 |
^ |
BRE,ERE |
行或字符串的开始;如:'^abcd' 匹配所有以abcd开头的行 |
$ |
BRE,ERE |
行或字符串的结束,如:'abcd$' 匹配以abcd结尾的行 |
. |
BRE,ERE |
匹配一个非换行符的字符 (1); 如:'a.b' 匹配a后接一个任意字符,然后是b,将匹配 aAb, a1b, acb, a@b等
如: '.b' 匹配 ab,1b,@b …等 |
* |
BRE,ERE |
匹配零个或多个正则表达式前面的字符 (0-n) 如:'ac*d' 匹配a后接零个或多个前面的字符,将匹配:ad, acd, accd, acccd …等
注意:星号不能放在首位, 星号前面必须有单个字符,经常我们使用 .*表示任意数目字符,但不能直接把星号放在首位如 '*d' |
[…] |
BRE,ERE |
匹配方括号内任意一个字符(1); 如:"[Ab]cde" 匹配Abcd和abcd
如:"[0-9]abc"匹配abc前面的任意一个数字:0abc, 1abc, 2abc, 012abcd, 0123abcd ……
[a-z] 123 匹配123前面的任意一个小写母如:a123, b123, ab123, abc123 [ |