Cómo hacer que Regex no distinga entre mayúsculas y minúsculasHola. ¿Alguien sabe cuál es la mejor manera de hacer que una búsqueda de expresiones regulares no distinga entre mayúsculas y minúsculas en JSL? Por ejemplo, deseo extraer la extensión del archivo de un nombre de ruta y no quiero que importe si la extensión es ".csv" o ".CSV" o ".cSv". Si intento lo siguiente, solo funcionará con nombres de archivos cuyas extensiones estén en minúsculas:
filename = Regex(path, "(.+\/)*([^\/]+)\.(csv|xlsx)$", "\2")
Un método es simplemente convertir toda la ruta a minúsculas antes de aplicarle expresiones regulares, pero por varias razones no quiero hacerlo.
filename = Regex(LowerCase(path), "(.+\/)*([^\/]+)\.(csv|xlsx)$", "\2")
El otro método que probé es usar el modificador "(?i)" en la cadena coincidente, pero aparece un error:
filename = Regex(path, "(?i)(.+\/)*([^\/]+)\.(csv|xlsx)$", "\2")
"regex encontró un cuantificador *, +, ?, o { en una posición no válida, el resultado no está definido en el acceso o evaluación de 'Regex'". Supongo que ese modificador no es compatible con JSL. ¿Alguna idea?
Automatización y secuencias de comandosRe: Cómo hacer que Regex no distinga entre mayúsculas y minúsculasSi desea extraer la extensión del archivo, le sugiero que consulte las funciones Word(), Words(), Item() y Items() en lugar de usar Regex.
Re: Cómo hacer que Regex no distinga entre mayúsculas y minúsculasTambién existe el indicador IGNORECASE en Regex en JMP, pero aún así sugeriría usar otros métodos además de regex si solo desea el nombre del archivo (o la extensión o ambos)
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(fuente, patrón, ( , >)
Guía de secuencias de comandos > Tipos de datos > Expresiones regulares > Función Regex
Re: Cómo hacer que Regex no distinga entre mayúsculas y minúsculasEste código híbrido funciona
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 );
Mi JSL preferido es
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: Cómo hacer que las expresiones regulares no distingan entre mayúsculas y minúsculasGracias @jthi . Sabía que había visto esto en alguna parte. Por supuesto, estaba en la guía de programación. Ja.