Bash 正则表达式:什么是 ^()$ 以及它有什么作用?

Bash 正则表达式:什么是 ^()$ 以及它有什么作用?

最近,我试图找到一种更好的语法来检查一个字符串是否符合几种可能性。这让我尝试

if [[ "hello" =~ "hi"|"hey"|"hello" ]]; then ...

因为它是一个正则表达式,所以如果第一个字符串是这样的,它就会触发"NOThello"。但是,下面的代码只会精确匹配字符串,拒绝"NOThello"

if [[ "hello" =~ ^("hi"|"hey"|"hello")$ ]]; then ...

它是什么^()$?它有什么用?它是 的一个功能[[,还是 shell 的一个功能?

我在手册页中找不到任何关于它的信息,其他 资源,我唯一的参考是. 的手册页test也没有任何关于此的信息。

Bash 版本是4.4.20

答案1

正则表达式解释:

^               # beginning of string
  (             # start capture group
    "hi"        # literally "hi"
   |           # OR
    "hey"       # literally "hey"
   |           # OR
    "hello"     # literally "hello"
  )             # end of group
$               # end of string

您将在这里找到有用的信息:

相关内容