首页 > 解决方案 > 字符串匹配的正则表达式 ****${****}***

问题描述

我正在尝试编写一个匹配并排除文件中所有字符串的正则表达式,这些字符串包含${其后}跟任何字符之间或周围的任何字符。中间可以是任何字符/数字/下划线/破折号/等(里面不会有另一个括号)。

示例匹配:

hello ${VAR}
${HELLO_VAR} world
https://${WEB_VAR}

我想出了这个:egrep -v '^\${[a-zA-Z?]',虽然它似乎部分工作,我不太确定它是否正确。我怎样才能做到这一点?

输入文件的字符串由换行符分隔,非常类似于简单的 java 属性。

标签: regexbash

解决方案


您可以尝试使用 sed 命令。

sed 's/\$\{[^}]*\}//g' <input_file> > <output_file>

这里的 sed 排除了 '{' 和 '}' 之间的所有字符,并将新内容写入新的输出文件中。


推荐阅读