【问题标题】:regex ${something} [duplicate]正则表达式 ${something} [重复]
【发布时间】:2020-08-07 14:50:03
【问题描述】:

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

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


    【解决方案1】:

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

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

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

    [^}] 不代表}

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • inner part 似乎更有趣,并且无论如何都给出了整个匹配项(至少在 C++ 中)。
      猜你喜欢
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多