in reply to Regex text extraction b/w first intance of pattern X and third instance of pattern Y.
sub match_in_between { my ($str, $r1, $r2, $n) = @_; return undef unless 4 == grep { defined() } ($str, $r1, $r2, $n); my ($match, $end) = ($str =~ /$r1((?:.*?($r2)){$n})/); return "" unless defined($match); return substr($match, 0, rindex($match, $end)); } print match_in_between("abcbcbc", qr/a/, qr/c/, 3); # bcbcb print match_in_between("cccabcbcbc", qr/a/, qr/c/, 3); # bcbcb print match_in_between("abcbxbcff", qr/a/, qr/b./, 3); # bcbx
|
|---|