J'essaie d'extraire toutes les chaînes passées à une fonction require à partir de fichiers javascript avec une simple regex.extrait du texte entre deux chaînes avec perl style regex (ocaml-re)
Exemple
var x = require("./something.js");
var y = require("./else.js");
console.log(other);
require("test.js");
Sur ce dossier, je veux extraire: ["./something.js", "./else.js", "test.js"]
.
j'ai réussi à écrire l'expression rationnelle suivante: "require\(\"(.*?)\"\)";
J'utilise ocaml-re
pour compiler le regex style perl et correspondre à une chaîne comme:
let everything = Re.all regex js;
let() =
List.iter
(
fun group ->
let g = Re.Group.all group in
Array.iter (fun s -> print_endline s) g
) everything
Il imprime les éléments suivants:
require("./something.js")
./something.js
require("./else.js")
./else.js
require("test.js")
test.js
Comment est-ce que je change l'expression rationnelle pour obtenir seulement le ./something.js, ./else.js, test.js
?
Pourquoi vous imprimer tous les groupes avec Array.iter? Le groupe 0 est toujours le match complet. Ici, vous semblez seulement intéressé par le groupe 1. – Drup
Vous avez tout à fait raison, je ne sais pas pourquoi je n'ai pas pris le groupe à l'index 1 ... – Seneca