【问题标题】:Get values inside double curly braces with regex使用正则表达式获取双花括号内的值
【发布时间】:2018-03-14 14:37:45
【问题描述】:

从这个字符串:

dfasd {{test}} asdhfj {{te{st2}} asdfasd {{te}st3}}

我想得到以下子字符串:

test, te{st2, te}st3

换句话说,我希望将所有内容都放在双花括号内包括单花括号

我不能使用这个模式:

{{(.*)}}

因为它匹配第一个 {{ 和最后一个 }} 之间的全部内容:

test}} asdhfj {{te{st2}} asdfasd {{te}st3

我设法用这个正则表达式模式获得了前两个:

{{([^}]*)}}

有什么方法可以使用正则表达式来获得所有三个?

【问题讨论】:

  • 试试{{(.*?)}}

标签: javascript regex


【解决方案1】:

试试{{(.*?)}}

.*? 意味着做一个惰性/非贪婪搜索 => 一旦 }} 匹配,它将捕获找到的文本并停止查找。否则它将进行贪婪搜索,因此从第一个 {{ 开始并以最后一个 }} 结束。

【讨论】:

  • .*? 贪婪。它很懒惰:一有机会就会停下来。
  • 感谢您的回答和解释。该模式完全符合我的要求。
【解决方案2】:

这不是那么漂亮,但它不使用 RegEx 并清楚地说明了您要完成的工作。

const testString = 'dfasd {{test}} asdhfj {{te{st2}} asdfasd {{te}st3}}';

const getInsideDoubleCurly = (str) => str.split('{{')
  .filter(val => val.includes('}}'))
  .map(val => val.substring(0, val.indexOf('}}')));

console.log(getInsideDoubleCurly(testString));

【讨论】:

    猜你喜欢
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    相关资源
    最近更新 更多