1

I am trying to find all the top level 'except' clauses from the below string.

where (
 param1 equals value1
 and
 param 2 equals valu2
 except (
  param3 equals value3
  where (
   param4 equals value4
   except (
     param6 equals value6
   )
  )
 )
)
except (
 param5 equal value5
)

Expected Result:

except (
  param3 equals value3
  where (
   param4 equals value4
   except (
     param6 equals value6
   )
  )
 )

&

 except (
     param5 equal value5
    )

I am new to regex and I was trying the below regex but its not working. except.((?:[^()]+|(?R))+)

Demo: https://regex101.com/r/AJZ1MV/1

Wiktor Stribiżew
  • 607,720
  • 39
  • 448
  • 563

1 Answers1

0

This regex groups the cases you mentioned but must be improved:

(?:(?<=[\s])(except (?:.|\s)*)(?=except|\)))?|(?:(?<=\n)(except (?:.|\s)*)(?=$|\)))

Demo: https://regex101.com/r/20RAQV/1

Briuor
  • 278
  • 1
  • 9