Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

219
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!