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

301
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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