regex $ {something} [duplicate]

问题描述 投票:-2回答:2
我如何使用正则表达式来获取$ {}括起来的值之内的内容,例如:

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

应返回:

This is the thing I want regex to return

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

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

c++ regex curly-braces dollar-sign
2个回答
3
投票
我建议\${[^}]*}。请注意,$在正则表达式中具有特殊含义,需要用\进行转义才能阅读文学。

我在括号之间使用[^}]*而不是.*,以避免进行包括以下所有值的长匹配:

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

[[^}]表示除}以外的任何东西

1
投票
您想要的是将起始${和结束}与之间的任意数量的字符进行匹配:\$\{.*\}。这里的特殊部分是.*.表示任何字符,*表示其前面的字符可以匹配0次或更多次。

因为您需要匹配的结果,所以您可能还希望将其包装在()(\$\{.*\})中。括号使regex记住其中的内容以备后用。有关如何获取结果的信息,请参见以下stackoverflow:How to match multiple results using std::regex

© www.soinside.com 2019 - 2024. All rights reserved.