#!/usr/bin/env perl use warnings; use strict; use Test::More; # regexen here... for my $regex ($re1,$re1_short) { unlike "foo", $regex; unlike "x5", $regex; unlike "ab5", $regex; unlike "ab5 x4", $regex; unlike "x5 ab5", $regex; like "ab5 x5", $regex; like "ab5x5", $regex; like "ab51 x51", $regex; like "ab51 ab4 x5 x4", $regex; my @results; while ("ab1 ab32 x2 ab42 x3 ab3 ab4x4ab5x1x42x45" =~ /$regex/g) { push @results, $+{target} // $1 } is_deeply \@results, ["x4","x1","x42"]; } for my $regex ($re2,$re2_short) { unlike "fo", $regex; unlike "x5", $regex; unlike "ab5", $regex; unlike "ab5 x4", $regex; like "foo", $regex; like "x5 ab5", $regex; like "ab5 x5", $regex; like "ab55", $regex; like "ab51 x51", $regex; my @results; while ("abcdefbdfbb" =~ /$regex/g) { push @results, $+{char} // $1 } is_deeply \@results, ["b","d","f","b","b"]; } for my $regex ($re3,$re3_short) { unlike "foo", $regex; unlike "x5", $regex; unlike "ab5", $regex; unlike "x5 abc5", $regex; unlike "ab x4", $regex; like "abc x4", $regex; like "abc x5", $regex; like "abbbcx5", $regex; like "abbc51 x51", $regex; like "abc51 ab x5 x4", $regex; my @results; while ("x2 abbbc x4 abc5 x1 x42" =~ /$regex/g) { push @results, $+{target} // $3 } is_deeply \@results, ["x4","x1","x42"]; } for my $regex ($re4,$re4_short) { unlike "fo", $regex; unlike "x5", $regex; unlike "5ab", $regex; unlike "x5 ab5", $regex; like "ab5 x4", $regex; like "x5 ab5 x2", $regex; my @results; while ("x2 a4 x3a55aaa1" =~ /$regex/g) { push @results, $+{target} // $2 } is_deeply \@results, ["4 ","3a","55"]; } done_testing;