マッチ部分が必要な2行のみにしたいのなら難しい(というかできるか
どうか俺もわからん)けど、そういう行を抽出したいだけなら前の1行も
マッチさせてしまえばいいんじゃね?

$str = <<__STR__;
ABCD
ABCD
EFGH
EFGH
EFGH
__STR__

$re = qr{
(?:
¥A
|
(^.+¥n)
(?!¥1)
)
(
(^.+¥n)
¥3
)
(?!¥3)
}xsm;

while ($str =~ /$re/g) {
print "<<<¥n$2>>>¥n"
}