Juste au cas où, vous auriez pu avoir supports déséquilibrés vous pouvez probablement concevoir une expression avec récurrence similaire à celle-ci,
\[(([^\]\[]+)|(?R))*+\]
ce qui, bien sûr, dépend du langage ou du moteur RegEx que vous utilisez.
A part ça,
\[([^\]\[\r\n]*)\]
ou,
(?<=\[)[^\]\[\r\n]*(?=\])
sont de bonnes options à explorer.
Si vous souhaitez simplifier/modifier/explorer l'expression, elle a été expliquée dans le panneau supérieur droit de la page regex101.com . Si vous le souhaitez, vous pouvez également regarder en ce lien comment il se comporterait par rapport à certains échantillons.
Circuit RegEx
jex.im visualise les expressions régulières :
Test
const regex = /\[([^\]\[\r\n]*)\]/gm;
const str = `This is a [sample] string with [some] special words. [another one]
This is a [sample string with [some special words. [another one
This is a [sample[sample]] string with [[some][some]] special words. [[another one]]`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Source :
Expression régulière pour correspondre aux parenthèses équilibrées