Ruby gsub regex para agregar la primera igualada carácter en la cadena reemplazada

StackOverflow https://stackoverflow.com/questions/9385971

  •  28-10-2019
  •  | 
  •  

Pregunta

Tengo una pequeña regex fragmento de código en ruby por debajo de la cual está reemplazando ":[\w]" con":~'

>> "name: Name, phone_number: Phone Number, inactive: Inactive ".gsub(/[:]\s[\w]/, ': ~')

=> "name: ~ame, phone_number: ~hone Number, inactive: ~nactive "

¿Cómo puedo modificar el gsub expresión para agregar el primer carácter en la cadena reemplazada, yo.e:

=> "el nombre de:~Nombre, número_teléfono:~Número de teléfono, inactivo:~Inactivo "

Gracias

¿Fue útil?

Solución

Primero, no necesitas [] Alrededor de un solo personaje/grupo de personajes especiales, ya que tiene sentido que desea agrupar varios personajes. Tu regex es equivalente a /:\s\w/.

Para resolver su problema, puede usar un grupo de captura y reinsertar la carta capturada:

s.gsub(/:\s(\w)/, ': ~\1')
# => "name: ~Name, phone_number: ~Phone Number, inactive: ~Inactive "

O use un LookAhead para no reemplazar la letra en primer lugar:

s.gsub(/:\s(?=\w)/, ': ~')
# => "name: ~Name, phone_number: ~Phone Number, inactive: ~Inactive "

Tal vez prefieras querer usar /:\s+(?=\w)/, que permitiría más de un espacio antes del próximo personaje.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top