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

296
Visualizações
Ruby: agregue una etiqueta a cada lado de la expresión regular coincidente con gsub

Tengo una expresión regular aquí: https://rubular.com/r/3p9WVitnlZQU3i

Al hacer ping a la API de Slack, convierte las comillas en bloque en líneas individuales con > al comienzo de cada línea, incluso si hay varias líneas. Quiero envolverlos en blockquotes:

En caso de que el enlace caduque en algún momento en el futuro, aquí está la cadena de prueba que debe coincidir:

 > This is a blockquote line testing a new line > 1- Another new blockquote section > 2- And this is part of the same blockquote > And this is the final line of this blockquote testing another > 1- Another new blockquote > 2- And the final line of the 3rd blockquote

Y aquí está la expresión regular

 ^>.*

La expresión regular funciona bien y estoy tratando de usar gsub u otro método para envolverlos en comillas para que el resultado final sea:

 <blockquote>This is a blockquote line</blockquote> testing a new line <blockquote>1- Another new blockquote section 2- And this is part of the same blockquote And this is the final line of this blockquote</blockquote> testing another <blockquote>1- Another new blockquote 2- And the final line of the 3rd blockquote</blockquote>

O incluso si eso es muy difícil, si solo envolviera cada línea que comenzó con &gt; en las etiquetas de cotización en bloque estaría bien, ya que simplemente no puedo agregar un margen inferior y se verán como una cita grande.

Sinceramente, estoy un poco perdido, pero supongo que estoy tratando de hacer algo como esto:

wrap_in_blockquote = replace_backticks2.gsub('^&gt;.*','<blockquote>/0</blockquote>')

Pero no tengo idea si necesito iterar a través de las coincidencias individualmente o esto hará eso o qué sintaxis debo usar ya que no estoy familiarizado con gsub y tuve problemas con la documentación. Cualquier ayuda apreciada.

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

0

Puedes usar

 s = "&gt; This is a blockquote line\ntesting a new line\n&gt; 1- Another new blockquote section\n&gt; 2- And this is part of the same blockquote\n&gt; And this is the final line of this blockquote\ntesting another\n&gt; 1- Another new blockquote\n&gt; 2- And the final line of the 3rd blockquote" rx = /^&gt;(.*)/ puts s.gsub(rx, '<blockquote>\1</blockquote>')

Vea la demostración en línea de Ruby . Producción:

 <blockquote> This is a blockquote line</blockquote> testing a new line <blockquote> 1- Another new blockquote section</blockquote> <blockquote> 2- And this is part of the same blockquote</blockquote> <blockquote> And this is the final line of this blockquote</blockquote> testing another <blockquote> 1- Another new blockquote</blockquote> <blockquote> 2- And the final line of the 3rd blockquote</blockquote>

Detalles :

El ^&gt;(.*) coincide con el inicio de una línea con ^ , luego coincide con &gt; y luego captura en el Grupo 1 cualquier cero o más caracteres que no sean caracteres de salto de línea tantos como sea posible con (.*) , donde los paréntesis crean un grupo de captura con ID 1 (por lo tanto, \1 se usa en el patrón de reemplazo para volver a colocar el valor del grupo en la cadena resultante).

Tenga en cuenta las comillas simples en el literal de cadena de patrón de reemplazo; si usa comillas dobles, deberá duplicar las barras invertidas.

over 4 years ago · Santiago Trujillo Relatório

0

A veces es más fácil usar código en lugar de una expresión regular muy compleja. Será más legible y luego, si necesita cambiar algo, usted o sus colegas se lo agradecerán.

 text = DATA.read block = "<blockquote>" text.each_line do |line| if line[/^&gt;/] block << line.sub(/^&gt;/,"") else unless block=="<blockquote>" puts "#{block.chomp}</blockquote>" block = "<blockquote>" end puts line end end puts block.chomp << "</blockquote>" unless block=="<blockquote>"

Que da lo que pediste

 <blockquote> This is a blockquote line</blockquote> testing a new line <blockquote> 1- Another new blockquote section 2- And this is part of the same blockquote And this is the final line of this blockquote</blockquote> testing another <blockquote> 1- Another new blockquote 2- And the final line of the 3rd blockquote</blockquote>

Ver aquí para una demostración de trabajo

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