Comment rendre Regex insensible à la casseSalut. Quelqu'un connaît-il la meilleure façon de rendre une recherche d'expression régulière insensible à la casse en JSL ? Par exemple, je souhaite extraire l'extension de fichier d'un nom de chemin, et je ne veux pas que cela importe si l'extension est ".csv" ou ".CSV" ou ".cSv". Si j'essaie ce qui suit, cela ne fonctionnera que sur les noms de fichiers dont les extensions sont en minuscules :
filename = Regex(path, "(.+\/)*([^\/]+)\.(csv|xlsx)$", "\2")
Une méthode consiste simplement à convertir l'intégralité du chemin en minuscules avant d'y appliquer une expression régulière, mais pour diverses raisons, je ne veux pas le faire.
filename = Regex(LowerCase(path), "(.+\/)*([^\/]+)\.(csv|xlsx)$", "\2")
L'autre méthode que j'ai essayée consiste à utiliser le modificateur "(?i)" dans la chaîne de correspondance, mais j'obtiens une erreur :
filename = Regex(path, "(?i)(.+\/)*([^\/]+)\.(csv|xlsx)$", "\2")
"regex a trouvé un quantificateur *, +, ? ou { dans une position invalide, le résultat n'est pas défini lors de l'accès ou de l'évaluation de 'Regex'". Je suppose que ce modificateur n'est pas pris en charge dans JSL. Des idées ?
Automatisation et scriptsRe : Comment rendre Regex insensible à la casseSi vous souhaitez extraire l'extension de fichier, je vous suggère de consulter les fonctions Word(), Words(), Item() et Items() au lieu d'utiliser Regex.
Re : Comment rendre Regex insensible à la casseIl y a aussi l'indicateur IGNORECASE dans Regex dans JMP, mais je suggérerais quand même d'utiliser d'autres méthodes que regex si vous voulez juste le nom de fichier (ou l'extension ou les deux)
Names Default To Here(1);
path = Convert File Path("$SAMPLE_DATA/Big Class.jmp");
filename1 = Regex(path, "(.+\/)*([^\/]+)\.(JMP)$", "\2", IGNORECASE);
filename2 = Word(-2, path, "\/.");
filename3 = Word(-1, path, "\/");
Show(filename1, filename2, filename3);

Regex(source, modèle, ( , >)
Guide de script > Types de données > Expressions régulières > Fonction Regex
Re : Comment rendre Regex insensible à la casseCe code hybride fonctionne
Names Default To Here( 1 );
path = "C:\users\big.cSv";
filename = "";
ext = Word( -1, path, "." );
If( Uppercase( ext ) == "CSV" | Uppercase( ext ) == "XLSX",
filename = Eval(
Parse(
"Regex(path, \!"(.+\/)*([^\/]+)\." || ext || "$\!", \!"\2\!")"
)
)
);
Show( filename );
Mon JSL préféré est
Names Default To Here( 1 );
path = "C:\users\big.cSv";
filename = "";
ext = Word( -1, path, "." );
If( Uppercase( ext ) == "CSV" | Uppercase( ext ) == "XLSX",
filename = Word( -2, path, ".\/" )
);
Show( filename );
Re: Comment rendre les expressions régulières insensibles à la casseMerci @jthi . Je savais que j'avais vu ça quelque part. Bien sûr, c'était dans le guide de script. Ha.