通配符和正则区别
`通配符是shell在做PathnameExpansion时用到的。说白了一般只用于文件名匹配,它是由shell解析的,比如find,ls,cp,mv等。
`正则表达式是用来匹配字符串的,针对文件内容的文本过滤工具里,大都用到正则表达式,如vi,grep,awk,sed等。
另外,这篇文章只针对Linux下的文本过滤工具的正则表达式进行讨论,其他的一些编程语言,如C++(c regex,c++ regex,boost regex),java,python等都有自己的正则表达式库。
简单点来说,正则表达式是对一组正在处理的文本的描述。
通配符
| * |
所有 |
| . |
当前目录 |
| .. |
上级目录 |
| - |
上一次所在目录 |
| ~ |
家目录 |
| # |
注释 超级管理员的命令提示符 |
| $ |
引用变量 普通用户的命令提示符 |
| ? |
匹配任意一个字符 |
| ! |
非取反 |
| && |
与 |
| || |
或 |
| | |
管道 |
| [] |
匹配中括号中任意一个字符 |
| {} |
生成序列,整体 |
| `` $() |
先执行内的代码 |
| & |
放到后台运行 |
| \ |
转义字符 |
| [^] |
不匹配[]中任意一个字符 |
正则 RE
| * |
匹配前面的字符 0或 0次以上 |
| .* |
匹配任意字符0或0次以上 |
| . |
任意字符 |
| ^ |
开头 |
| $ |
结尾 |
| ^$ |
空行 |
| \ |
转义字符 |
| | |
或者 |
| [] |
匹配[]中任意一个字符 |
| [^] |
不匹配[]中任意一个字符 |
| () |
后向引用 把前面括号中匹配的内容 拿到后面表达式使用 |
| + |
前面的字符匹配1 或1次以上 |
| ? |
前面的字符匹配0或1次 |
| {n} |
前面的字符匹配n次 |
| {n,} |
前面的字符匹配至少n次 |
| {n,m} |
前面的字符至少匹配n次, 但是不超过m次 |
| {,m} |
前面的字符匹配m次 |
|
|