Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

176
Visualizações
Reemplace N espacios al comienzo de una línea con N caracteres

Estoy buscando una sustitución de expresiones regulares para transformar N espacios en blanco al comienzo de una línea en N   . Entonces este texto:

 list: - first

debe convertirse:

 list:   - first

Yo he tratado:

 str = "list:\n - first" str.gsub(/(?<=^) */, "&nbsp;")

que devuelve:

 list: &nbsp;- first

a la que le falta una &nbsp; . ¿Cómo mejorar la sustitución para obtener el resultado deseado?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Puede utilizar el ancla \G y \K para restablecer el punto de inicio de la coincidencia informada.

Para hacer coincidir todos los espacios simples principales:

 (?:\R\K|\G)
  • (?: grupo de no captura
    • \R\K Coincidir con una nueva línea y borrar el búfer de coincidencia
    • | O
    • \G Afirmar la posición al final del partido anterior
  • ) Cerrar el grupo de no captura y hacer coincidir un espacio

Vea una demostración de expresiones regulares y una demostración de Ruby .


Para hacer coincidir solo los espacios iniciales individuales en la cadena de ejemplo:

 (?:^.*:\R|\G)\K

En partes, el patrón coincide:

  • (?: grupo de no captura
    • ^.*:\R Coincide con una línea que termina con : y coincide con una nueva línea
    • | O
    • \G Afirmar la posición al final de la coincidencia anterior, o al comienzo de la cadena
  • ) Cerrar grupo de no captura
  • \K Olvídese de lo que ha coincidido hasta ahora y haga coincidir un espacio

Vea una demostración de expresiones regulares y una demostración de Ruby .

Ejemplo

 re = /(?:^.*:\R|\G)\K / str = 'list: - first' result = str.gsub(re, '&nbsp;') puts result

Producción

 list: &nbsp;&nbsp;- first
over 4 years ago · Santiago Trujillo Relatório

0

Yo escribiría

 "list:\n - first".gsub(/^ +/) { |s| '&nbsp;' * s.size } #=> "list:\n&nbsp;&nbsp;- first"

Ver cadena #*

over 4 years ago · Santiago Trujillo Relatório

0

Use gsub con una función de devolución de llamada:

 str = "list:\n - first" output = str.gsub(/(?<=^|\n)[ ]+/) {|m| m.gsub(" ", "&nbsp;") }

Esto imprime:

 list: &nbsp;&nbsp;- first

El patrón (?<=^|\n)[ ]+ captura uno o más espacios al comienzo de una línea. Esta coincidencia luego pasa a la devolución de llamada, que reemplaza cada espacio, uno a la vez, con &nbsp; .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda