通配符和正则区别
`通配符是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次 |
|
|