• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

191
Views
Regex para obtener 2 caracteres específicos entre otros 2 caracteres específicos

tengo una cadena:

[](first-(second))

Me gustaría eliminar ( y ) entre [](... y el último ...)

Dicho esto, actualmente estoy usando (?<=\[\]\()(.*?)(?=\))

Supongo que (.*?) debe reemplazarse con algún tipo de expresión que encuentre ( y ) en el medio.

Algo similar a string.replace(/(?<=\[\]\()(.*?)(?=\))/g, '')

Y la cadena debería verse como [](first-second)

about 3 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Como ya usaste un lookbehind en el patrón con JavaScript, podrías usar un cuantificador infinito en el lookbehind, unir los 2 paréntesis que no deseas conservar y capturar en el grupo 1 lo que deseas conservar.

En el grupo de uso de reemplazo 1 usando $1

 (?<=\[\]\([^()]*)\(([^()]*\))\)

El patrón coincide:

  • (?<= Positivo mirar atrás, afirmar lo que está a la izquierda es:
    • \[] Partido []
    • \([^()]* Coincidencia ( y 0+ veces cualquier carácter excepto ( y )
  • ) Cerrar mirar atrás
  • \( Partido (
  • ([^()]*\)) Grupo de captura 1 , coincidencia 0+ veces cualquier carácter excepto ( y )
  • \) Partido )

Demostración de expresiones regulares

 const s = "[](first-(second))" const regex = /(?<=\[]\([^()]*)\(([^()]*\))\)/; console.log(s.replace(regex, "$1"))

O usando 2 grupos de captura en lugar de mirar atrás:

 (\[]\([^()]*)\(([^()]*\))\)

Demostración de expresiones regulares

 const s = "[](first-(second))" const regex = /(\[]\([^()]*)\(([^()]*\))\)/; console.log(s.replace(regex, "$1$2"))

about 3 years ago · Juan Pablo Isaza Report

0

Si no necesita un código elegante, ¿por qué no optar por el camino fácil? Extraiga la subcadena sin corchetes externos, reemplace y concat. los caracteres eliminados

s = '[](first-(second))'

 mySubstring = s.substring(3, s.length -2); // 'first-(second)' //your replacement func. result = '[]('+mySubstring+')'; //'[](first-second)'
about 3 years ago · Juan Pablo Isaza Report

0

Aquí hay un ejemplo (sin usar anticipación). Debería guiarte en la dirección correcta.

Usando 2 grupos de captura y algunos conjuntos no codiciosos, puede ensamblar su cadena de destino.

No asume paréntesis ni corchetes anidados adicionales, aunque puede modificarlo según sus necesidades para incluir solo caracteres alfanuméricos en los conjuntos de caracteres.

 const d = '[](foo-(bar)) [](foo2-(bar2))' const rx = /(\[\]\([^-\(\)\[\]]*?-)\(([^\)]*?)\)\)/g const m = rx.exec(d) console.log(m) const fixed = d.replace(rx, '$1$2)') console.log(fixed)

about 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error