Regex 搜捕

Regex 搜捕,regex,sed,Regex,Sed,我正试着去 ${test value}(尽管我更喜欢测试值) 从这个表达式 echo 'test=${test-value} ... more text' | sed 's/\${[^}]*}/&/' 但它只是打印输入 我想我是这样匹配的 $ { 零个或多个字符不在} } 但是很明显,我没有或者可能我遗漏了其他东西。您将${test value}与\${[^}]*}匹配,但是您将其替换为自身,因为替换模式中的&代表整个匹配值 如果要使用sed(在替换模式中使用\1占位符来匹配整个字符串

我正试着去

${test value}(尽管我更喜欢测试值)

从这个表达式

echo 'test=${test-value} ... more text' | sed 's/\${[^}]*}/&/'
但它只是打印输入

我想我是这样匹配的

  • $
  • {
  • 零个或多个字符不在}
  • }

  • 但是很明显,我没有或者可能我遗漏了其他东西。

    您将
    ${test value}
    \${[^}]*}
    匹配,但是您将其替换为自身,因为替换模式中的
    &
    代表整个匹配值

    如果要使用
    sed
    (在替换模式中使用
    \1
    占位符来匹配整个字符串,但捕获所需内容并保留它),请使用以下修复程序:

    或者使用匹配方法(使用
    grep
    使用
    -o
    选项提取匹配文本):


    查看一个。

    不清楚,请在您发布时在代码标签{}按钮中发布更清晰的示例,并清楚地说明您在帖子中寻找的内容。告诉我们您期望的确切输入和输出。没问题。我对Wiktor提供的解决方案很满意。谢谢。我不知道格雷普也能做到。
    sed 's/.*\(\${[^}]*}\).*/\1/'
    
    grep -o '\${[^}]*}'