J'ai besoin d'analyser un modèle d'e-mail pour les variables personnalisées qui se produisent entre des paires de signes dollar, par exemple:

$foo$bar$baz$foo$bar$baz$wtf

Je voudrais donc commencer par extraire «foo» ci-dessus, car il se situe entre la première paire (1er et 2e) de signes dollar. Et puis sautez «bar» mais extrayez «baz» au fur et à mesure qu'il se situe entre la prochaine paire (3e et 4e) de signes dollar.

J'ai pu accomplir cela avec split et filter comme ci-dessous, mais je me demande s'il y a un moyen d'accomplir la même chose avec une expression régulière à la place? Je suppose qu'une sorte d'analyseur formel, récursif ou autre, pourrait être utilisé, mais cela semblerait exagéré à mon avis

const body = "$foo$bar$baz$foo$bar$baz$wtf";
let delimitedSegments = body.split('$');

if (delimitedSegments.length % 2 === 0) {
  // discard last segment when length is even since it won't be followed by the delimiter
  delimitedSegments.pop();
}

const alternatingDelimitedValues = delimitedSegments.filter((segment, index) => {
  return index % 2;
});
console.log(alternatingDelimitedValues);

SORTIE: ['foo', 'baz', 'bar']

Code également à: https://repl.it/@dexygen/findTextBetweenDollarSignDelimiterPairs

1
Dexygen 14 janv. 2020 à 06:40