Estaba tratando de encontrar una solución elegante al siguiente problema. Tengo la siguiente cadena:
Este ) es ) un texto $. ) lkzejflez $ aaeea ) aeee
Existiendo de una parte que es texto legible por humanos antes del corchete marcado en negrita y una parte que simplemente es basura después del corchete. Necesito encontrar el texto legible por humanos en una cadena como esta. Necesito obtener el texto antes del último corchete (marcado en negrita) que todavía tiene un signo de dólar (marcado en negrita) detrás. Aquí está mi solución al problema:
const info = "This)is)$a sentence.)lkzejflez$aaeea)aeee"; let result; for(let i = 0; i < info.length;i++){ const char = info[i]; const after = info.substring(i+1,info.length); const otherChance = after.indexOf(')') < after.lastIndexOf('$'); if(otherChance){continue;}; const isEndBracket = char ===')'; const before = info.substring(0,i) if(isEndBracket){result = before;break;}; } console.log(result)El resultado esperado es 'Esto) es) $ una oración.' Mi código devuelve este resultado pero usa substr y un forloop donde se podría usar regex. Yo sin embargo no ahora cómo. ¿Alguien sabe una solución más elegante a mi problema? Gracias por adelantado.
Pruebe la siguiente expresión regular: ^.*\)(?=.*\$)
Explicación: Haga coincidir tantos caracteres como sea posible desde el principio de la línea hasta el último ) seguido de $.
Explicación detallada: haga coincidir con avidez cero o más de cualquier carácter excepto una nueva línea desde el comienzo de la línea con un carácter ) seguido de cero o más de cualquier carácter excepto una nueva línea y luego un signo $.