Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

144
Vistas
¿Cómo capturar una instancia particular de una cadena solo si ocurre dos veces en expresiones regulares?

Tengo una expresión regular: /diff\\left\((...*?\\right\){0,1})\\right\)/gm y la cadena que quiero hacer coincidir es diff\left(5x^2\right) + diff\left(5x^2+\tan\left(x\right)\right) .

Quiero hacer coincidir de tal manera que haya dos coincidencias diff\left(5x^2+\right) y diff\left(5x^2+\tan\left(x\right)\right) cada una con grupos capturados 5x^2 y 5x^2+\tan\left(x\right) . Quiero agregar \right) dentro de un grupo capturado una vez solo si ocurre dos veces. Sin embargo, solo obtengo una sola coincidencia con todo el 5x^2\right)+diff\left(5x^2+\tan\left(x\right) dentro de un grupo capturado. Aquí hay dos imágenes para una mejor comprensión. Las partes azules representan coincidencias y las partes verdes representan grupos capturados Aquí está el resultado que obtengo

Salida deseada

La primera imagen es una captura de pantalla de regex101 y la segunda es una imagen editada

Por favor, ayúdenme con esto. Estoy tratando de crear una aplicación de calculadora simbólica. Gracias

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Si esas dos partes siempre deben estar unidas por caracteres de space , puede intentar algo como lo siguiente: https://regex101.com/r/Lcsxxv/1

recorte de regex101.com

 const regex = /diff\\left\(([^ ]*)\\right\)/gm; const str = `diff\\left(5x^2\\right) + diff\\left(5x^2+\\tan\\left(x\\right)\\right)`; const matches = []; const groups = []; let r; while ((r = regex.exec(str)) !== null) { matches.push(r[0]); groups.push(r[1]); } console.log(`matches:\n\t${matches.join('\n\t')} groups:\n\t${groups.join('\n\t')}`)

La forma en que funciona es que va a buscar la última instancia de \right) hasta el final de la cadena o un carácter de space , lo que ocurra primero.

Espero que esto responda tu pregunta.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda