正規表現単独って結構厳しくないか?

(if)(.+)(endif|end)

だときっちりターゲット絞れるからと思って

(if)(.+)(?!end)

こうすると見事に駄目になるしな

プログラム的に

(if)(.+)(endif|end)
これの否定を検索みたいなことができなければ一度でやるのは無理じゃね?

一度抽出して結果を交えてどうにかするならいけそうだが