gpt4 book ai didi

regex - 在 bash 的 if 条件中使用正则表达式

转载 作者:行者123 更新时间:2023-11-29 08:39:14 26 4
gpt4 key购买 nike

我想知道在 bash 的 if 子句中使用正则表达式的一般规则?

举个例子

$ gg=svm-grid-ch  
$ if [[ $gg == *grid* ]] ; then echo $gg; fi
svm-grid-ch
$ if [[ $gg == ^....grid* ]] ; then echo $gg; fi
$ if [[ $gg == ....grid* ]] ; then echo $gg; fi
$ if [[ $gg == s...grid* ]] ; then echo $gg; fi
$

为什么最后三个不匹配?

希望你能给出尽可能多的通用规则,而不仅仅是这个例子。

最佳答案

当使用 glob 模式时,问号代表单个字符,星号代表零个或多个字符的序列:

if [[ $gg == ????grid* ]] ; then echo $gg; fi

使用正则表达式时,点代表单个字符,星号代表前面的零个或多个字符。所以“.*”代表零个或多个任意字符,“a*”代表零个或多个“a”,“[0-9]*"表示零个或多个数字。另一个有用的(在许多中)是加号,它代表一个或多个前面的字符。因此,“[a-z]+”代表一个或多个小写字母字符(在 C 语言环境中 - 以及其他语言环境)。

if [[ $gg =~ ^....grid.*$ ]] ; then echo $gg; fi

关于regex - 在 bash 的 if 条件中使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2348379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com