Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

146
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!