use strict;
my $str = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sed lacus tempus, consequat turpis dapibus, gravida sapien. Praesent venenatis venenatis dui sed mattis.
Phasellus id ultrices lorem. Donec volutpat efficitur ullamcorper. Cras a vehicula tortor. ___
Interdum et malesuada fames ac ante ipsum primis in faucibus.
Etiam quis sapien eget mi fringilla cursus vitae a velit.
Praesent non mi nulla.
Morbi imperdiet risus felis, at fermentum diam ultricies et.
Mauris leo sem, efficitur a sollicitudin ac, dapibus ut orci. ___
Sed a venenatis augue.
Eget placerat nunc.
Nunc a fringilla ex.
Vestibulum accumsan ullamcorper purus id consectetur. Duis quis velit mauris.
Sed interdum magna ac purus aliquam, at interdum erat finibus. ___
Aenean ut nisl dignissim, lobortis risus ut, fringilla libero. Fusce at eros a mauris tristique laoreet sit amet at velit.
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent ac condimentum velit.
Nunc condimentum vulputate mauris et tincidunt. ___
Nullam consectetur tincidunt ex, in placerat ligula molestie et.
Praesent lacus justo, scelerisque ac iaculis tristique, malesuada quis nisl.
Sed mattis pellentesque elit. Nulla facilisis tellus sed eros efficitur pellentesque venenatis vitae dui. ___';
my $regex = qr/(*napla:.{1,300}$\R?(.*\z))(?>\N*\R?){0,5}(?=\1)/umsp;
if ( $str =~ /$regex/g ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html