use v5.12;
(?=
(
(?:
(?= (X.*\n | .(?-1). ) X)
.*\n # go to next line
){2}
.* # include next line in $1
)
)
/mx;
my $no = <<'STR';
....X...
.X..X...
.X......
STR
say
@m ? "matched": "no match";
dXNlIHY1LjEyOwoKCm15ICRyZSA9IHFyL14KICAoPz0KICAgICgKICAgICAgKD86CiAgICAgICAgICAoPz0gKFguKlxuIHwgLig/LTEpLiApIFgpCiAgICAgICAgICAuKlxuICMgZ28gdG8gbmV4dCBsaW5lCiAgICAgICl7Mn0KICAgICAgLiogIyBpbmNsdWRlIG5leHQgbGluZSBpbiAkMQogICAgKQogICkKL214OwoKbXkgJG5vID0gPDwnU1RSJzsKLi4uLlguLi4KLlguLlguLi4KLlguLi4uLi4KU1RSCgpteSBAbSA9ICRubyA9fiAkcmU7CnNheSBAbSA/ICJtYXRjaGVkIjogIm5vIG1hdGNoIjsKCg==