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

128
Vistas
¿Cómo puedo capturar un carácter específico dentro de cadenas específicas con expresiones regulares?

Quiero reemplazar todos los puntos -que están dentro de cadenas específicas- por guiones bajos. En mi caso, estoy usando i18n (para traducciones) dentro de mi aplicación, y las claves se llaman usando '$t(clave)'. La clave puede ser así:

 key = 'translationKey' key = 'translationKey.subkey.subSubkey' key = 'translationKey.subkey.one' key = 'translationKey.subkey.zero' key = 'translationKey.subkey.others'

En el contexto $t: quiero transformar los puntos (.) que no son seguidos por one o zero u others en guiones bajos (_). Si tengo esas entradas:

 foo.toto.anything $t('translationKey') $t('translationKey.subkey.subSubkey') $t('translationKey.subkey.one') $t('translationKey.subkey.zero') $t('translationKey.subkey.others')

Entonces la salida será:

 foo.toto.anything $t('translationKey') $t('translationKey_subkey_subSubkey') $t('translationKey_subkey.one') $t('translationKey_subkey.zero') $t('translationKey_subkey.others')

Me gustaría usar la búsqueda de expresiones regulares de Vscode para capturar esos puntos y reemplazarlos (si es posible).

Solo logré obtener todas las cadenas donde están los puntos de destino, pero no puedo alcanzar solo los puntos. Aquí está la expresión regular que tengo atm: (\$|\.)t?t(c|p)?('(\w+\.?)*')

Gracias

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

0

Puedes usar

 (?<=\$t\('[^']*)\.(?!(?:one|zero|others)')(?=[^']*'\))

Vea la demostración de expresiones regulares . Detalles :

  • (?<=\$t\('[^']*) - una mirada positiva hacia atrás que requiere $t(' y luego cero o más caracteres que no sean ' inmediatamente a la izquierda de la ubicación actual
  • \. - un punto
  • (?!(?:one|zero|others)') - una búsqueda anticipada negativa que falla la coincidencia si hay one' , zero' u others' inmediatamente a la derecha de la ubicación actual
  • (?=[^']*'\)) - una búsqueda anticipada positiva que requiere cero o más caracteres que no sean ' y luego ') .
about 4 years ago · Juan Pablo Isaza Denunciar

0

La siguiente expresión regular debería funcionar: coincide con todos los puntos no seguidos por "uno", "otros" y "cero"

 (?<=\$t\('[^']+)\.(?!one|others|zero)

Puedes probarlo en línea aquí

https://regex101.com/r/84Jil1/1

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