in reply to Silly Regex question...

Actually, it's not an obvious question until you get more familiar with regular expressions. In a nutshell: "don't use them to parse HTML." HTML is simply too complex and arbitrary for a reasonable regex to handle. You need to try something like HTML::Parser instead.

If you go down the mis-guided path of trying to write regexes to parse HTML, eventually, you'll wind up with monstrosities like this:

$data =~ s/ ( # Capture to $1 <a\s # <a and a space character (?: # Non-capturing parens [^>](?!href) # All non > not followe +d by href )* # zero or more of them href\s* # href followed by zero or +more space characters ) ( # Capture to $2 &#61;\s* # = plus zero or more space +s ( # Capture to $3 &[^;]+; # some HTML character c +ode (probably " or ') )? # which might not exist (?: # Non-grouping parens .(?!\3) # any character not fol +lowed by $3 )+ # one or more of them (?: \3 # $3 )? # (which may not exist) ) ( # Capture to $4 [^>]+ # Everything up to final > > # Final > ) /$1 . decode_entities($2) . $4/gsexi;
Which I was trying to debug in this node.

Sorry for the bad news.

Cheers,
Ovid

Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.

Replies are listed 'Best First'.
Re: (Ovid) Re: Silly Regex question...
by chipmunk (Parson) on Jan 11, 2001 at 07:59 UTC
    This answer would be more relevant if the original poster were actually asking how to parse HTML. But this is not what the original poster asked; using HTML::Parser to perform a straightforward substitution like this, on HTML that is known ahead of time, would be overkill. I think the fact that my regex met the original poster's needs is sufficient proof of this.