【转载】正则表达式和通配符的区别

原文地址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++...

你可能感兴趣的:(【转载】正则表达式和通配符的区别)