regex - 如果使用正则表达式 - 字符串匹配整个字符串或整个字符串 + 另一个字符?
问题描述
抱歉,如果这样的问题已经有了答案,我真的不知道该怎么说,所以我会尽力而为。
如何使 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
谢谢
解决方案
您可以删除s
(如果存在),然后比较它是否匹配
your_pet=bird
if [[ "$animals" =~ ",${your_pet%s}," ]]
then
...
但是,请考虑其他复数形式,例如goose, geese。
推荐阅读
- python - 正则表达式捕获第一个和第二个空格之间的字符串
- twitter-bootstrap - 没有空间嵌套的引导按钮
- c# - 使用 UTF-8 编码解码 Base64 字符串
- c# - 如何在流文档中设置页宽 (A4)
- typescript - 有没有办法区分 Javascript/TypeScript 中不同接口类型的对象?
- python - Python - 用最接近的非零颜色填充图像的颜色
- python - 如何根据列值/字符串将数据框中的多行替换为另一个数据框中的行?
- azure-powershell - 如何使用“az storage entity insert”命令将特殊字符插入 Azure 表存储?
- visual-studio - Visual Studio:如何在连续执行中重用相同的控制台
- mongoose - 猫鼬将项目添加到数组