正则表达式和通配符的区别(转)

Explain 1:
一、正则表达式是用来匹配字符串的,这个就不解释了
二、通配符是用来通配的,也就是shell在作Pathname Expansion时用到的

Explain 2:
通配符,说白了通常只用于文件名匹配, 它是由shell解析的。所谓的系统level的概念很是含糊,什么是系统level的?咱们知道shell是一个命令解释器,它是内核的外壳,用于完成 操做系统使用者与内核的沟通,所以,通配符实际上就是一个shell解释器去解析的符号,它的特殊涵义是由shell这个命令解释器赋予的。通配符的英文 名是wildcard,就是万用牌的意思,它至关简单,通常来讲,*nix系统上面的shell大多将三个特殊符号看成通配符,它们是 * ? [...], 其中 * 表示匹配任意长度的任意字符; ? 表示匹配一个任意字符, 而[...]则表示匹配括号中列出的字符中的任意一个。

    其次。什么是正则表达式(regular expression, 缩写是regex.)?从简单的角度去理解,你能够把正则表达式当作是一种字符串匹配模式标准。这里最重要的就是,它自己,只是一种业界流行的标准,或者 说,它是至关于对字符串匹配模式的一种规定。这种规定是随着相关的工具软件的发展而自称体系的“不成文规矩”。
    -- 举个例子好了。假设首先有一种工具软件可以根据“模式(pattern)”搜索字符串,这个工具很是流行,以致于后续的工具软件都效仿那个工具软件定义的模式规则来匹配字符串 -- 慢慢的就造成标准,并且相对来讲是一种不成文的规矩.
    因此,正则表达式是什么? -- 它是一种对字符串匹配模式的描述和规定 -- 而且是一种标准。而不一样的工具程序,也就是egrep、sed、awk这样的程序,以各类程度来支持这种字符串搜索模式,它们就是标准的实现,你能够在这 种软件中使用正则表达式这种“匹配模式标准”。 -- 明白?

    因此,在什么地方使用通配符?答案是只要是shell命令行或者shell脚本中,你均可以使用通配符;
    在什么地方使用正则表达式?当你使用可以支持正则表达式的工具软件进行字符串处理时你就可使用正则表达式。你还能够在支持正则表达式的语言中使用正则表 达式,好比perl, java... C++中也有专门用于支持正则表达式的库。正则表达式老是和“使用什么工具软件或者语言”相关。相对来讲,不一样的工具和语言对正则表达式的支持程度不 同,*nix里面将这些工具软件的对正则表达式的支持分类,所以也就有了“基础正则表达式”和“扩展正则表达式”。
    
    不一样的工具对正则表达式的支持,其实有些许的微妙不一样;可是整体来讲,使用正则仍是基本按照标准来的。这些不一样的工具支持程度,被称之为“正则流派”。而 工具软件中支持这种匹配模式的那部分代码,称之为“正则引擎”。因为perl对正则表达式的支持很是到位,其正则引擎也比较优秀,所以perl语言算是正 则的一大流派,目前大部分对正则的支持都或多或少参考了perl语言中的标准。
 
 
原文  http://www.cnblogs.com/xiongyunqi/p/3735846.html
相关文章
相关标签/搜索