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

218
Vistas
How would I match nested "if" statements in regex? (using ruby)

I'm using ruby. I'm looking to match the outer "if" group of this:

{#if x > 10}
    <p>{x} is greater than 10</p>
    {#if 5 > x}
        <p>{x} is less than 5</p>
    {/if}
{/if}

What I have so far is this regex:

\{#if(.*)}(.|\n)*?\{\/if\}

But that just matches the first /if statement instead of the last one (see https://rubular.com/r/4l89GlANV9AVCQ). Any ideas?

(I tried this recursive regex matcher I saw on Stack Overflow: https://rubular.com/r/7a4PYTtxFQftob, but I'm struggling to make it work for the above)

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

It's basically the same as the regex for balanced parentheses that you linked to, but since the markers here are of multiple characters rather than single characters, you would need to use a negative lookahead pattern instead of simply a negated character class to ensure a matching character in the middle isn't part of the markers for the balanced construct:

{#if.*?}(?>(?!{(?:#if.*?|\/if)}).|\g<0>)*{\/if}

Demo: https://rubular.com/r/7BU2FStPEP34W4

Note that you should enable MULTILINE mode with the m option in order for . to match a newline character.

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