This was my attempt
my $string = <<EOF; xxxYYxxxYYxxx YY YY 4Y 4X 4Y 4Y YY YY EOF print "1: $string"; $string =~ s/ (?: (?<=x) | \G ) (Y) (?= Y* x) /x/gx; print "2: $string"; $string =~ s/ (?<= ^ (.*) Y .* $ ^ \1 ) (4) (?= .* $ ^ \1 Y .* $ ) /Y/mgx; print "3: $string";
The first part to match the horizontal parts works fine. The second part to match the verticals doens't work though for two reasong
  1. It is going to match the same string horizontally in each case up to the vertical replacement (which wasn't specified)
  2. Perl gave this message "variable length lookbehind not implemented" when I tried it ;-)

In reply to RE: vertical regex in a matrix? by ncw
in thread vertical regex in a matrix? by jimt

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.