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?
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 }}.
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));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With