通配符和正则表达式
通配符与正则表达式很容易混淆,首先要明白二者是不同的,通配符用于Linux的shell命令(如文件名相关操作)中,而正则表达式用于文本内容中的字符串搜索和替换等。通配符是Linux系统本身就支持的,而正则表达式用于vim编辑器或awk程序,这些文本处理工具正是由于支持正则表达式才变得强大。
通配符
[] 匹配一个字符
[135] 1或者3或者5
[1-5a-z] 1到5中或a到z中任意一个字符,
[!1-5]除了1到5的任意一个非空字符
[^1-5]同上
*:匹配0个字符或多个字符。
?:匹配任何单个字符,且不能为空字符。
{}:多个结果的集合
{a.txt,b.txt}同时匹配a.txt , b.txt
正则表达式
. 任意的一个字符
* 任意多个字符 a* 任意多个a, .
^abc 以abc开头
abc$ 以abc结尾
n 重复n次
a5 字符a重复5次
a5, a重复大于5次
a5,8 a重复大于5小于8次
ab[cd] 包含abc,或者abd的目标
ab[^cd] 不包含abc,或者abd的目标
() 括号中的内容当成一个字符来看
hello123* 匹配hello后面有多个123字符串
hello1233 匹配hello后面有3个123字符串
这些字符在vim还有不同的意思,去看看vim的语法
常用语法