use strict;
my $str = '\\nNH<sub>2</sub>CONH<sub>21</sub>, F.W.
\\nsNH<sub>2</sub>CONH, F.W. 60.06<br />\\nCAS No. 57-13-6</p>\\n<p>Shipping: Not regulated for
/>\\nFeO<sub>2</sub>dsa
fooasdfNH<sub>2</sub>CONH<sub>2</sub>NH<sub>2</sub>CONH<sub>2</sub>NH<sub>2</sub>CONH<sub>2</sub>NH<sub>2</sub>CONH<sub>2</sub>He
NH2CONH';
my $regex = qr/((?:(?:H[eogf]?|L[iau]|B[eari]?|C[arouseld]?|N[eiapdb]?|O[sg]?|F[rle]?|M[gon]|A[lrsgutc]|S[icernmb]?|P[uabotmrd]?|Kr?|T[icebmalh]|V|Z[nr]|G[ade]|R[buhena]|Yb?|I[nr]?|Xe|E[ur]|Dy|W|U)+(?:(?:<su[bp]>(?:[2-9][0-9]*)<\/su[bp]>)|[2-9][0-9]*)*){2,})/mp;
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