从这个字符串:
dfasd {{test}} asdhfj {{te{st2}} asdfasd {{te}st3}}
我想获得以下子字符串:
test, te{st2, te}st3
换句话说,我希望将所有内容保持在双花括号中,包括单花括号。
我不能使用这种模式:
{{(.*)}}
因为它匹配第一个{{和last}}之间的整个事物:
test}} asdhfj {{te{st2}} asdfasd {{te}st3
我设法用这个正则表达式模式获得前两个:
{{([^}]*)}}
有没有办法让所有三个使用正则表达式?
答案 0 :(得分:4)
尝试{{(.*?)}}
。
.*?
表示进行懒惰/非贪婪搜索=>只要}}匹配,它将捕获找到的文本并停止查找。否则它将进行贪婪搜索,因此从第一个{{并以最后一个结束}}开始。
答案 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));