Come rendere Regex insensibile alle maiuscoleCIAO. Qualcuno conosce il modo migliore per rendere insensibile il caso della ricerca regex in JSL? Ad esempio, desidero estrarre l'estensione del file da un nome di percorso e non voglio che abbia importanza se l'estensione è ".csv" o ".CSV" o ".cSv". Se provo quanto segue, funzionerà solo su nomi di file le cui estensioni sono minuscole:
filename = Regex(path, "(.+\/)*([^\/]+)\.(csv|xlsx)$", "\2")
Un metodo è semplicemente convertire l'intero percorso in minuscolo prima di eseguire l'espressione regolare su di esso, ma per vari motivi non voglio farlo.
filename = Regex(LowerCase(path), "(.+\/)*([^\/]+)\.(csv|xlsx)$", "\2")
L'altro metodo che ho provato è utilizzare il modificatore "(?i)" nella stringa di corrispondenza, ma ottengo un errore:
filename = Regex(path, "(?i)(.+\/)*([^\/]+)\.(csv|xlsx)$", "\2")
"l'espressione regolare ha trovato un quantificatore *, +, ?, o { in una posizione non valida, il risultato non è definito nell'accesso o nella valutazione di 'Regex'". Immagino che il modificatore non sia supportato in JSL. Qualche idea?
Automazione e scriptingRi: Come rendere Regex insensibile alle maiuscoleSe desideri estrarre l'estensione del file, suggerirei di controllare le funzioni Word(), Words(), Item() e Items() invece di utilizzare Regex.
Ri: Come rendere Regex insensibile alle maiuscoleC'è anche il flag IGNORECASE in Regex in JMP, ma suggerirei comunque di utilizzare altri metodi oltre a regex se desideri solo il nome del file (o l'estensione o entrambi)
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(sorgente, modello, ( , >)
Guida di scripting > Tipi di dati > Espressioni regolari > Funzione Regex
Ri: Come rendere Regex insensibile alle maiuscoleQuesto codice ibrido funziona
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 );
Il mio JSL preferito è
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: Come rendere Regex insensibile alle maiuscole e minuscoleGrazie @jthi . Sapevo di averlo visto da qualche parte. Ovviamente era nella guida allo scripting. Ah.