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

225
Vistas
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 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

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 4 years ago · Juan Pablo Isaza Denunciar

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 4 years ago · Juan Pablo Isaza Denunciar

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 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