正则表达式 ${something}

regex ${something}

如何使用正则表达式获取 ${} 封闭值中的内容,例如:

Dont care about this. ${This is the thing I want regex to return} Not this either.

应该return:

This is the thing I want regex to return

我试过了\${ }$ 我在 regex101.com 上搞砸的最好的 老实说,就正则表达式而言,我不知道自己在做什么

在 c++ 上使用,但也(如果可能)喜欢在 geany 文本编辑器中使用

您想要的是将开头 ${ 和结尾 } 与中间任意数量的字符匹配:$\{.*\}。这里的特殊部分是.*.表示任意字符,*表示前面的东西可以匹配0次或多次。

由于您想要三个匹配的结果,您可能还想将其包装在 (): ($\{.*\}) 中。括号让正则表达式记住里面的东西以备后用。 有关如何取回结果的信息,请参阅此 Whosebug: How to match multiple results using std::regex

我建议${[^}]*}。注意 $ 在正则表达式中有特殊含义,需要用 \ 进行转义才能阅读文学作品。

我在大括号之间使用 [^}]* 而不是 .* 以避免进行包含整个值的长匹配:

${Another} match, more then one ${on the same line}

[^}] 除了 }