【发布时间】:2013-11-09 12:08:06
【问题描述】:
我看到* 的通配符被用在了一些命令中,例如:find *.jpg,这意味着查找所有以.jpg 结尾的文件。但是,在正则表达式中,.* 也意味着任何字符 0 次或更多次。那么,它们之间有什么区别呢?什么时候使用*,什么时候使用.*?
【问题讨论】:
-
你指的是两个不同的东西。文件名搜索中的通配符不是正则表达式,因此它的含义与您描述的一样,与它在正则表达式中的使用无关。
-
那么,我们什么时候用通配符,什么时候用正则表达式呢?
-
shell 使用通配符以一种有限的正则表达式形式,也称为“通配符”。它使用
*表示零个或多个任何字符,?表示任何一个字符,并具有基本字符类[A-Za-z]和否定字符类([!A-Za-z],但要注意认为!意味着什么的shell歇斯底里——错误,历史)。它远不如 POSIX 和基本级别grep中的 BRE(基本正则表达式)强大的正则表达式语言,更不用说 ERE(扩展正则表达式)或 PCRE(与 Perl 兼容的正则表达式)。