use v5.12;


my $re = qr/^
  (?=
    (
      (?:
          (?= (X.*\n | .(?-1). ) X)
          .*\n # go to next line
      ){2}
      .* # include next line in $1
    )
  )
/mx;

my $no = <<'STR';
....X...
.X..X...
.X......
STR

my @m = $no =~ $re;
say @m ? "matched": "no match";

