检查字符串bash中是否存在2个子字符串

时间:2019-07-15 04:51:25

标签: regex bash

我要检查字符串str中的字母d和y是否以任何顺序同时存在。

如果我尝试使用正则表达式|中的OR运算符(d|y),则如果字符串中包含“ d”或“ y”,则结果为true,但是如果使用AND运算符&,则不会工作,甚至评估为假 两个字母都以字符串形式存在。

检查此内容的正确方法是什么?

这是我到目前为止测试过的

str="good day"

if [[ $str =~ (d|y) ]] # This works for OR operator
if [[ $str =~ (d&y) ]] # doesn´t work for AND operator
    then 
        echo "yes"
else 
    echo "no"
fi

谢谢。

1 个答案:

答案 0 :(得分:1)

if [[ $str =~ (d.*y)|(y.*d) ]]; then

或者如果您不想重复dy

if [[ $str =~ d ]] && [[ $str =~ y ]] ; then