use strict;
my $str = 'I have a huge HTML with several special chars, in the forms or "�.
Faulty HEX: #82173333;
Some of them are wrong, because they lack the initial &.
I would like to search for such wrong spacial chars. I know that I can search all the right special chars by means of the following regex:
\\&(?:[a-z]+|#x?\\d+);\\
But I\'d need a regex useful to search the wrong ones (without the initial &). Can you help me? Thanks in advance
Edit:
As suggested, I post an example. My HTML cointains the following statement:
<![CDATA[<nolink>blablabla blablabla</nolink>]]>nbsp;
where we have 2 special HTML character:
divide;
÷
quot;
I\'m interested in finding the second item, because it is wrong (laking the initial &).
So the output of the requested regex should be: quot;';
my $regex = qr/(?<!&)(?:\b(?:[a-z]{2,8}\d{0,2})|#[0-9a-f]+);/mip;
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