首页 > 解决方案 > 如何构造正则表达式来比较shell脚本中不区分大小写的字符串?

问题描述

我正在将命令行参数传递给 shell 脚本,并且正在将它与正则表达式进行比较。以下代码区分大小写:

[[ $1 =~ ^(cat)|(dog)$ ]] && echo "match" || echo "no match"

如何修改这个忽略大小写的正则表达式?我将能够通过cAt,它应该匹配。

我想使用/i正则表达式标志,因为它忽略大小写。但是如何在 shell 脚本中使用它呢?我已经尝试过[[ $1 =~ /(cat)|(dog)/i ]],但脚本退出时出现语法错误。

StackOverflow 有一个类似的问题,但它没有回答我的询问。我想用来test比较两个字符串并且不感兴趣使用shopt -s nocasematchgrep <expression>

标签: regexstringbashshell

解决方案


只需使用

shopt -s nocasematch

在你的命令之前。

或者

shopt -s nocasematch && [[ 'doG' =~ (cat)|(dog) ]] && echo 'hi' || echo 'no match'

推荐阅读