Regex 搜捕
我正试着去 ${test value}(尽管我更喜欢测试值) 从这个表达式Regex 搜捕,regex,sed,Regex,Sed,我正试着去 ${test value}(尽管我更喜欢测试值) 从这个表达式 echo 'test=${test-value} ... more text' | sed 's/\${[^}]*}/&/' 但它只是打印输入 我想我是这样匹配的 $ { 零个或多个字符不在} } 但是很明显,我没有或者可能我遗漏了其他东西。您将${test value}与\${[^}]*}匹配,但是您将其替换为自身,因为替换模式中的&代表整个匹配值 如果要使用sed(在替换模式中使用\1占位符来匹配整个字符串
echo 'test=${test-value} ... more text' | sed 's/\${[^}]*}/&/'
但它只是打印输入
我想我是这样匹配的
但是很明显,我没有或者可能我遗漏了其他东西。您将
${test value}
与\${[^}]*}
匹配,但是您将其替换为自身,因为替换模式中的&
代表整个匹配值
如果要使用sed
(在替换模式中使用\1
占位符来匹配整个字符串,但捕获所需内容并保留它),请使用以下修复程序:
或者使用匹配方法(使用grep
使用-o
选项提取匹配文本):
查看一个。不清楚,请在您发布时在代码标签
{}
按钮中发布更清晰的示例,并清楚地说明您在帖子中寻找的内容。告诉我们您期望的确切输入和输出。没问题。我对Wiktor提供的解决方案很满意。谢谢。我不知道格雷普也能做到。
sed 's/.*\(\${[^}]*}\).*/\1/'
grep -o '\${[^}]*}'