glob-style模式和正则表达式有什么区别?

时间:2014-05-16 18:23:52

标签: regex glob

我遇到的情况是只支持glob样式的模式,并且不存在完整的正则表达式支持,例如redis键。我想知道两者之间的区别。另外它让我想知道,与一些软件根本不支持正则表达式的glob-style模式相比,实现正则表达式匹配算法更难?

2 个答案:

答案 0 :(得分:23)

传统的glob通配符支持一组非常狭窄的元字符 - *是"任何",?是一个任意单个字符; Bourne shell还支持[a-z123]用于一组替代中的单个字符,[!x-z789]除了列出的那些之外的任何一个字符。

正则表达式显然更丰富,支持重复,并且(在ERE中)交替和特定的重复次数。 Perl风格的正则表达式进一步扩展了形式主义,使得已经编写了多本书,并且会更多。

基本正则表达式对于编程并不比glob通配符更具挑战性,而且现在,无论如何,一个称职的程序员会链接到现有的库。

许多较简单的系统不想让用户承担学习正则表达式的复杂性 - 即使是基本的通配符也是向平均销售人员解释的挑战^ W ^ W不是满员的人 - 计算机用户。

答案 1 :(得分:2)

正则表达式在命令/函数中用于文本中的模式匹配。例如,在grep的模式参数中,或在编程语言中。

shell使用Globbing来使用通配符匹配文件和目录名称。 globbing的功能取决于shell。例如,Bash支持以下通配符:

可以找到更多信息here