【问题标题】:Regex and quoted strings [duplicate]正则表达式和带引号的字符串[重复]
【发布时间】:2013-02-09 08:24:54
【问题描述】:

这是一个名为“目标”的变量

$ echo $_target
x86_64-linux-gnu

此正则表达式测试成功...

$ 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

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

【问题讨论】:

标签: regex bash


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 2023-03-27
    • 2010-09-13
    • 2016-08-08
    • 2016-07-29
    • 2016-03-12
    • 2021-10-19
    相关资源
    最近更新 更多