Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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/16.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 正则表达式和带引号的字符串_Regex_Bash - Fatal编程技术网

Regex 正则表达式和带引号的字符串

Regex 正则表达式和带引号的字符串,regex,bash,Regex,Bash,这是一个名为“target”的变量 此正则表达式测试成功 $ if [[ $_target =~ "x86_64" ]]; then echo "match"; fi match 但是它不测试表达式是否在行的开头。让我将锚标记添加到正则表达式: $ if [[ $_target =~ "^x86_64" ]]; then echo "match"; fi $ 上面的线并不表示匹配。奇怪 但是,如果我去掉正则表达式周围的引号,一切都很好 $ if [[ $_target =~ ^x86_64

这是一个名为“target”的变量

此正则表达式测试成功

$ if [[ $_target =~ "x86_64" ]]; then echo "match"; fi
match
但是它不测试表达式是否在行的开头。让我将锚标记添加到正则表达式:

$ if [[ $_target =~ "^x86_64" ]]; then echo "match"; fi
$
上面的线并不表示匹配。奇怪

但是,如果我去掉正则表达式周围的引号,一切都很好

$ if [[ $_target =~ ^x86_64 ]]; then echo "match"; fi
match

为什么引号会影响正则表达式测试?如果我对上面的第二个测试不匹配感到惊讶,那么我还缺少什么呢?

您不应该将=~运算符的右侧放在引号中,因为这意味着一个字符串,而不是正则表达式。(

这里可能有答案:
$ if [[ $_target =~ ^x86_64 ]]; then echo "match"; fi
match