s/([^[:^alpha:]nN])([\dnN]+\1)/_$1$2_/g; s/__/_/g;

Update: Ah, you had more specs hidden in your code block (and roughly that solution, except without the double-^ trick that I like). You can't use things like \3 in a character class, even if you don't try to use them out-of-order. I'll take a stab later. Update:

my $string = '423RY75Y69827EC67592C78657N965R345U299M'; my $correct= '423R_Y75Y_69827E_C67592C_78657N965R_345U_299M'; for( $string ) { s/([^[:^alpha:]nN])([\dnN]+\1)/_$1$2_/g; s/(?<=([^\dnN_]))?([\dnN]+)([^\dnN_])/ $2 . $3 . ( $1 eq $3 ? '' : '_' ) /ge; s/_(_|$)/$1/g; } print "Okay\n" if $string eq $correct;

Add "defined $1 &&" or "no warnings 'uninitialized'" to avoid a warning, if you need to.

- tye        


In reply to Re: match if last char and first char are different excluding certain chars (^.^) by tye
in thread match if last char and first char are different excluding certain chars by leocharre

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.