bash 使用什么类型的正则表达式引擎?

bash 使用什么类型的正则表达式引擎?

我用正则表达式好友制作原型并调试我的正则表达式。 RegEx Buddy 允许我在多种不同的正则表达式引擎类型(.NET、Java、Perl、GNU BRE、GNU ERE、POSIX、BRE、POSIX ERE 等)之间进行选择。

bash 使用什么正则表达式引擎(例如 inifcase语句)?我正在运行 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?

答案1

bash(以及一般的 POSIX shell)不在语句中使用正则表达式case,而是全局模式

对使用运算符的正则表达式的支持有限=~;详情请见:http://mywiki.wooledge.org/BashGuide/Patterns
它表示bash使用扩展正则表达式 (ERE)。

答案2

ifBash 在和语句中不使用任何上述类型的正则表达式case

相反,它使用 shell glob 模式,这种模式的功能不如任何类型的正则表达式。相对较新的 bash 版本还允许使用扩展的 glob 模式,这些模式在表达上等于没有(行)锚点但包含否定项的正则表达式,但其语法与上述任何正则表达式类型不同。

shopt -s extglob 但请注意,必须先在 shell 脚本中或以交互方式使用扩展 shell glob 。

在一个特殊位置,即在[[ ]]条件命令内,=~二元关系允许根据右侧的扩展正则表达式 ERE 检查左侧的字符串。

答案3

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

有关该方言的更多信息可以找到这里

相关内容