Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何使bash在进行正则表达式匹配时识别字符范围?_Regex_Bash - Fatal编程技术网

Regex 如何使bash在进行正则表达式匹配时识别字符范围?

Regex 如何使bash在进行正则表达式匹配时识别字符范围?,regex,bash,Regex,Bash,Bash 4.3.33我注意到了这种行为。看起来正则表达式引擎无法将[]识别为元字符。有没有办法启用完全(扩展的)正则表达式支持,或者如何称之为正则表达式支持 var=bananas if [[ "$var" =~ "[as]"$ ]]; then echo 'yes' else echo 'no' fi if [[ "$var" =~ "s"$ ]]; then echo 'yes' else echo 'no' fi var=bananas] if [[ "$var" =~

Bash 4.3.33我注意到了这种行为。看起来正则表达式引擎无法将
[]
识别为元字符。有没有办法启用完全(扩展的)正则表达式支持,或者如何称之为正则表达式支持

var=bananas
if [[ "$var" =~ "[as]"$ ]]; then
  echo 'yes'
else
  echo 'no'
fi
if [[ "$var" =~ "s"$ ]]; then
  echo 'yes'
else
  echo 'no'
fi
var=bananas]
if [[ "$var" =~ "]"$ ]]; then
  echo 'yes'
else
  echo 'no'
fi
输出:

no
yes
yes

在正则表达式部分不需要使用双引号

if [[ "$var" =~ [as]$ ]]; then
所以

会产生,

yes
yes
yes
更好的说法是:你不能使用引号。或者,当您引用正则表达式元字符时,它将成为普通字符。
yes
yes
yes