Regex - Récupérer le texte entre deux chaînes de caractères

Exemple :

Ceci est une \n phrase simple.

Je veux capter chaque caractère entre Ceci est simple. Les sauts de ligne doivent être ignorés. Je n’arrive pas à trouver la syntaxe correcte.

Par exemple:

(?<=Ceci)(.*)(?=simple)

Voici le demo.

J’ai utilisé le mode « lookbehind » (?<=) et le mode « look ahead » (?=) pour que « Ceci » et « simple » ne soient pas inclus dans la recherche, mais cela dépend de votre cas d’utilisation, vous pouvez aussi simplement écrire Ceci(.*)simple.

L’important ici est d’activer le mode « dotall » de votre moteur de regex, afin que le . corresponde à la nouvelle ligne. Mais la manière de procéder dépend de votre moteur de regex.

Ensuite, il s’agit de savoir si vous utilisez .* ou .*? Le premier est gourmand et correspondra jusqu’à la dernière « simple » de votre texte, le second est paresseux et correspondra jusqu’à la prochaine « simple » de votre texte.

Très simple:

Ceci(?s)(.*)simple

Essayez ce RegEx:

Ceci[\s\S]*?simple

, fonctionne en Javascript.

Utiliser ceci:

(?<=debut)(.*\n?)(?=fin)

Dans le cas de JavaScript, vous pouvez utiliser [^]

const s = "Ceci est une \n phrase simple.";
const regex = /Ceci([^]*?)simple/;
const res = s.match(regex);

if (res) {
  console.log(res[1]);
}

Résultat:

est une
phrase