简体   繁体   中英

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?

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)); 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM