use strict;
my $str = '<ul>
<li><a href="#symbols">Symbol report</a></li>
<ul>
<li><a href="#symbolsConsistency">Consistency</a></li>
<li><a href="#symbolCharacteristics">Symbol characteristics</a></li>
<li><a href="#basicSymbols">Display of basic symbols</a></li>
<ul>
<li>Pg_1_qds_Bin_Indicator_2</li>
<ul>
<li>[QDSConsistency.report.field.logicIndicator.descriptionalignment] = (Right)</li>
<li>[QDSConsistency.report.field.logicIndicator.descriptiontextcolor] = (Color {0, 0, 0, 255})</li>
<li>[QDSConsistency.report.field.logicIndicator.isdescriptiondisplayed] = (true)</li>
<li>[QDSConsistency.report.field.logicIndicator.descriptionfontfamily] = (Arial)</li>
<li>[QDSConsistency.report.field.logicIndicator.descriptionfontsize] = (11 pt)</li>
<li>[QDSConsistency.report.field.logicIndicator.descriptionfontstyle] = (Normal)</li>
<li>[QDSConsistency.report.field.logicIndicator.descriptionfontposition] = (LEFT)</li>
<li>[QDSConsistency.report.field.analogIndicator.descriptiontext] = (v1)</li>
<li>[QDSConsistency.report.field.logicIndicator.backgroundcolor] = (Color {238, 238, 238, 255})</li>
<li>[QDSConsistency.report.field.logicIndicator.digitnumber] = (8)</li>
<li>[QDSConsistency.report.field.logicIndicator.widgetfont] = (FONT1)</li>
<li>[QDSConsistency.report.field.logicIndicator.shortname] = (Pg_1_qds_Bin_Indicator_2)</li>
<li>[QDSConsistency.report.field.logicIndicator.precision] = (2)</li>
<li>[QDSConsistency.report.field.logicIndicator.widgetuserfontfamily] = (Arial)</li>
<li>[QDSConsistency.report.field.logicIndicator.widgetuserfontsize] = (11 pt)</li>
<li>[QDSConsistency.report.field.analogIndicator.widgetuserfontstyle] = (NORMAL)</li>
<li>[QDSConsistency.report.field.analogIndicator.dynamicbackgroundcolor] = (Color {238, 238, 238, 255})</li>
<li>[QDSConsistency.report.field.analogIndicator.longname] = (Pg_1_qds_Bin_Indicator_2_v1)</li>
<li>[QDSConsistency.report.field.logicIndicator.heith] = (32)</li>
<li>[QDSConsistency.report.field.logicIndicator.weigth] = (50)</li>
<li>[QDSConsistency.report.field.logicIndicator.poxX] = (352)</li>
<li>[QDSConsistency.report.field.logicIndicator.poxY] = (116)</li>
<li>[QDSConsistency.report.field.logicIndicator.valuealignment] = (Left)</li>
<li>[QDSConsistency.report.field.logicIndicator.value_0] = (Off)</li>
<li>[QDSConsistency.report.field.logicIndicator.value_1] = (On)</li>
</ul>
<li>Pg_1_qds_Bin_Indicator_3</li>
<ul>
<li>[QDSConsistency.report.field.logicIndicator.descriptionalignment] = (Right)</li>
<li>[QDSConsistency.report.field.logicIndicator.descriptiontextcolor] = (Color {0, 0, 0, 255})</li>
<li>[QDSConsistency.report.field.logicIndicator.isdescriptiondisplayed] = (true)</li>
<li>[QDSConsistency.report.field.logicIndicator.descriptionfontfamily] = (Arial)</li>
<li>[QDSConsistency.report.field.logicIndicator.descriptionfontsize] = (11 pt)</li>
<li>[QDSConsistency.report.field.logicIndicator.descriptionfontstyle] = (Normal)</li>
<li>[QDSConsistency.report.field.logicIndicator.descriptionfontposition] = (LEFT)</li>
<li>[QDSConsistency.report.field.analogIndicator.descriptiontext] = (v1)</li>
<li>[QDSConsistency.report.field.logicIndicator.backgroundcolor] = (Color {238, 238, 238, 255})</li>
<li>[QDSConsistency.report.field.logicIndicator.digitnumber] = (8)</li>
<li>[QDSConsistency.report.field.logicIndicator.widgetfont] = (FONT1)</li>
<li>[QDSConsistency.report.field.logicIndicator.shortname] = (Pg_1_qds_Bin_Indicator_3)</li>
<li>[QDSConsistency.report.field.logicIndicator.precision] = (2)</li>
<li>[QDSConsistency.report.field.logicIndicator.widgetuserfontfamily] = (Arial)</li>
<li>[QDSConsistency.report.field.logicIndicator.widgetuserfontsize] = (11 pt)</li>
<li>[QDSConsistency.report.field.analogIndicator.widgetuserfontstyle] = (NORMAL)</li>
<li>[QDSConsistency.report.field.analogIndicator.dynamicbackgroundcolor] = (Color {238, 238, 238, 255})</li>
<li>[QDSConsistency.report.field.analogIndicator.longname] = (Pg_1_qds_Bin_Indicator_3_v1)</li>
<li>[QDSConsistency.report.field.logicIndicator.heith] = (32)</li>
<li>[QDSConsistency.report.field.logicIndicator.weigth] = (50)</li>
<li>[QDSConsistency.report.field.logicIndicator.poxX] = (446)</li>
<li>[QDSConsistency.report.field.logicIndicator.poxY] = (187)</li>
<li>[QDSConsistency.report.field.logicIndicator.valuealignment] = (Left)</li>
<li>[QDSConsistency.report.field.logicIndicator.value_0] = (Off)</li>
<li>[QDSConsistency.report.field.logicIndicator.value_1] = (On)</li>
</ul>
</ul>
<p><em>Analog indicator :</em></p>
<ul>
<li>Pg_1_qds_Ana_Indicator_1</li>
<ul>
<li>[QDSConsistency.report.field.analogIndicator.descriptionalignment] = (Right)</li>
<li>[QDSConsistency.report.field.analogIndicator.descriptiontextcolor] = (Color {0, 0, 0, 255})</li>
<li>[QDSConsistency.report.field.analogIndicator.isdescriptiondisplayed] = (true)</li>
<li>[QDSConsistency.report.field.analogIndicator.descriptionfontfamily] = (Arial)</li>
<li>[QDSConsistency.report.field.analogIndicator.descriptionfontsize] = (11 pt)</li>
<li>[QDSConsistency.report.field.analogIndicator.descriptionfontstyle] = (Normal)</li>
<li>[QDSConsistency.report.field.analogIndicator.descriptionfontposition] = (LEFT)</li>
<li>[QDSConsistency.report.field.analogIndicator.descriptiontext] = (v0)</li>
<li>[QDSConsistency.report.field.analogIndicator.backgroundcolor] = (Color {238, 238, 238, 255})</li>
<li>[QDSConsistency.report.field.analogIndicator.digitnumber] = (8)</li>
<li>[QDSConsistency.report.field.analogIndicator.widgetfont] = (FONT1)</li>
<li>[QDSConsistency.report.field.analogIndicator.shortname] = (Pg_1_qds_Ana_Indicator_1)</li>
<li>[QDSConsistency.report.field.analogIndicator.precision] = (2)</li>
<li>[QDSConsistency.report.field.analogIndicator.widgetuserfontfamily] = (Arial)</li>
<li>[QDSConsistency.report.field.analogIndicator.widgetuserfontsize] = (11 pt)</li>
<li>[QDSConsistency.report.field.analogIndicator.widgetuserfontstyle] = (NORMAL)</li>
<li>[QDSConsistency.report.field.analogIndicator.dynamicbackgroundcolor] = (Color {238, 238, 238, 255})</li>
<li>[QDSConsistency.report.field.analogIndicator.longname] = (Pg_1_qds_Ana_Indicator_1_v0)</li>
<li>[QDSConsistency.report.field.analogIndicator.heith] = (32)</li>';
my $regex = qr/<li>(Pg_.*)<\/li>/p;
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