http://qs321.pair.com?node_id=11112996


in reply to wiki regex reprocessing replacement

#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11112988 use warnings; my $wiki = '_/one *two*/ th/ree_ null _/four *five*/ six_ null _/se_ven *eig +ht*/ nine_'; my $expected = '<u><i>one <b>two</b></i> th/ree</u> null <u><i>four <b>five</b></ +i> six</u> null <u><i>se_ven <b>eight</b></i> nine</u>'; my %h = ( '*' => 'b' , '/' => 'i' , '_' => 'u' , ); my $html = $wiki =~ s{ (?:^|\s) \K ([*_/]+) | ([*_/]*) (?=$|\s) } { $1 ? $1 =~ s|.|<$h{$&}>|gr : $2 =~ s|.|</$h{$&}>|gr }gexr; print $html eq $expected ? "passed" : "FAILED", "\n\n"; print $wiki, "\n\n", $expected, "\n\n", $html, "\n";

Outputs;

passed _/one *two*/ th/ree_ null _/four *five*/ six_ null _/se_ven *eight*/ +nine_ <u><i>one <b>two</b></i> th/ree</u> null <u><i>four <b>five</b></i> si +x</u> null <u><i>se_ven <b>eight</b></i> nine</u> <u><i>one <b>two</b></i> th/ree</u> null <u><i>four <b>five</b></i> si +x</u> null <u><i>se_ven <b>eight</b></i> nine</u>

Replies are listed 'Best First'.
Re^2: wiki regex reprocessing replacement
by LanX (Saint) on Feb 15, 2020 at 18:23 UTC
    ah yes \K not \G I keep confusing them.

    And I thought that $1 and $2 are read-only ... ah I see you use the /r flag.

    anyway, markup should be paired.°

    my $wiki = '_one*'; my $expected = $wiki; $html = $wiki =~ s{ (?:^|\s) \K ([*_/]+) | ([*_/]*) (?=$|\s) } { $1 ? $1 =~ s|.|<$h{$&}>|gr : $2 =~ s|.|</$h{$&}>|gr }gexr; print $html eq $expected ? "passed" : "FAILED", "\n\n"; print $wiki, "\n\n", $expected, "\n\n", $html, "\n";

    FAILED _one* _one* <u>one</b>

    I've updated the tests in Re: wiki regex reprocessing replacement (UPDATED^2) with markup to ignore

    Funny enough, the monastery fails too :)

    FAILED
    
    _one*
    
    _one*
    
    one  
    

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery

    °) yes I know, wasn't explicitely tested

      Let it fail, it should be obvious in the preview.

      hehehe

        oh ... I've expected more from you, followed with a "that was fun" ... ;-(

        Cheers Rolf
        (addicted to the Perl Programming Language :)
        Wikisyntax for the Monastery