首页 > 解决方案 > 如果使用正则表达式 - 字符串匹配整个字符串或整个字符串 + 另一个字符?

问题描述

抱歉,如果这样的问题已经有了答案,我真的不知道该怎么说,所以我会尽力而为。

如何使 if 语句匹配整个字符串或带有额外字符的整个字符串?


假设$animals变量已,dog,cat,pig,bird,goat,存储在其中。我想看看用户定义的变量是否$your_pet是否是逗号分隔值之一,或者是否在末尾带有“s”。

所以也许会像这样工作:

your_pet=bird

if [[ "${your_pet}" == ,*"${animals}"*, || "${your_pet}"s == ,*"${animals}"*, ]]
then
....

但是,我需要检查是否$your_pet以“s”结尾,如果有或没有,则接受它。(上面的代码未经测试,但我几乎可以肯定它不会工作)。

以下是 的所有允许值$your_pet

dog
dogs
cat
cats
pig
pigs
bird
birds
goat
goats

以下是一些不允许的示例:

my dog
my dogs
 dog
hamster
hamsters

我觉得在 if 语句中使用正则表达式可以解决问题,但我对正则表达式知之甚少,不知道该使用什么。(如果在这种情况下甚至需要正则表达式)

在 OS X 10.11.6 El Capitan 上使用 bash 3.2.57(1)-release

谢谢

标签: regexbashmacosif-statementcommand-line

解决方案


您可以删除s(如果存在),然后比较它是否匹配

your_pet=bird

if [[ "$animals" =~ ",${your_pet%s}," ]]
then
   ...

但是,请考虑其他复数形式,例如goose, geese


推荐阅读