Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get values inside double curly braces with regex

From this string:

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

I would like to get the following substrings:

test, te{st2, te}st3

In other words I want keep everything inside double curly braces including single curly braces.

I can't use this pattern:

{{(.*)}}

because it matches the whole thing between first {{ and last }}:

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

I managed to get the first two with this regex pattern:

{{([^}]*)}}

Is there any way to get all three using regex?

like image 611
eugenesqr Avatar asked Dec 12 '25 08:12

eugenesqr


2 Answers

Try {{(.*?)}}.

.*? means to do a lazy / non greedy search => as soon as }} matches, it will capture the found text and stop looking. Otherwise it will do a greedy search and therefore start with the first {{ and end with the very last }}.

like image 84
Paul Avatar answered Dec 13 '25 22:12

Paul


This isn't that pretty, but it doesn't use RegEx and makes it clear what you are trying to accomplish.

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));
like image 25
th3n3wguy Avatar answered Dec 13 '25 20:12

th3n3wguy



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!