原文地址https://www.cnblogs.com/xiongyunqi/p/3735846.html
首先明确结论:
- 正则表达式是用来匹配字符串的
- 通配符是用来匹配文件名的,也就是shell在做Pathname Expansion时用到的
通配符 wildcard
一般只用于文件名匹配,它是由shell解析的
shell是一个命令解释器,它是OS内核的外壳,用于完成用户与内核的沟通
通配符实际上就是一个shell解释器去解析的符号,它的特殊涵义是由shell这个命令解释器赋予的
一般来说,Unix系统上面的shell大多将三个特殊符号当作通配符:
* 表示匹配任意长度的任意字符 ? 表示匹配一个任意字符 [] 表示匹配括号中列出的字符中的任意一个
正则表达式 regular expression
是一种字符串匹配模式标准,只是一种业界流行的标准
相当于对字符串匹配模式的一种规定
这种规定是随着相关的工具软件的发展而自成体系的“不成文规定”
不同的工具程序,比如egrep、sed、awk这样的程序,以各种程度来支持这种字符串搜索模式,它们就是标准的实现,即你可以在这些软件中使用正则表达式这种“匹配模式标准”。
支持正则表达式的程序语言,比如perl,java,C++中也有专门用于支持正则表达式的库
因此,正则表达式总是和“使用什么工具软件或者语言”相关
基础RE与扩展RE
相对来说,不同的工具和语言对正则表达式的支持程度不同,Unix里面将这些工具软件的对正则表达式的支持程度进行分类,因此也就有了“基础正则表达式”和“扩展正则表达式”。
相关背景知识
不同的工具或语言对正则表达式的支持,都有些许不同之处,但是总体来说,使用正则还是基本按照标准来的。
这些不同的支持程度,被称之为“正则流派”
而工具软件中支持这种匹配模式的那部分代码,称之为“正则引擎”
由于perl对正则表达式的支持非常到位,其正则引擎也比较优秀,因此perl语言算是正则的一大流派,目前大部分对正则的支持都或多或少参考了perl语言中的标准。
在什么地方使用通配符?
- 只要是shell命令行或者shell脚本中,你都可以使用通配符
在什么地方使用正则表达式?
- 使用能够支持正则表达式的工具软件 进行字符串处理时就可以使用正则表达式
比如egrep、sed、awk - 还可以在支持正则表达式的语言中使用正则表达式
比如perl、java、 C++...