bash使用哪种正则表达式引擎类型?


12

我使用RegEx Buddy对正则表达式进行原型设计和调试。RegEx Buddy允许我在多种不同的正则表达式引擎类型(.NET,Java,Perl,GNU BRE,GNU ERE,POSIX,BRE,POSIX ERE等)之间进行选择。

bash使用什么正则表达式引擎(例如in ifcasestatement)?我正在运行Centos 5.5 32位和bash 3.2.25(1):

[kevin@mon01 scratch]$ bash --version
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

我猜是GNU BRE还是GNU ERE?

Answers:



3

Bash在ifcase语句中不使用上述任何一种正则表达式。

而是,它使用Shell Glob模式,其功能不如任何常规的expresion强。相对较新的bash版本还允许使用扩展的glob模式,这些模式在没有正则表达式的情况下等同于正则表达式,但不包括(行)锚,但包括否定项,但语法与上述任何正则表达式类型不同。

但是请注意,必须先shopt -s extglob 在外壳程序脚本中或以交互方式启用扩展的外壳程序glob 。

在一个特殊的地方,即在[[ ]]条件命令中,=~二进制关系允许相对于右侧的扩展正则表达式ERE检查左侧的字符串。


0

根据链接的Bash指南,Bash(版本3.0及更高版本)使用:“ 扩展正则表达式(ERE)方言”。

有关该方言的更多信息,请参见此处

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.