in reply to Help with reg expressions

Hi, I replied earlier with the ^-> negated character class. I just noticed your code at top, you might want to consider replacing this:
if (/\<img src=(???)-disclose.gif(.*)\>/i) { $_ = "";
with this: (note: the improved regex is inserted below)
lc; #Much more efficient than having the regex do it s/\<img\s*src\s*=[^->]-disclose.gif[^>]*>//g; #more effecient to use a substitution
Please note that I used the lc function, because having the regex perform case insensitive searching is a lot of overhead, also I changed your $_ = "" to a substition, which is also more effecient. Also, if you had more than one img tag on a line before, the whole line would have been deleted if even one of the tags had the -disclose.gif text in them. Also I changed the end of the regex. Instead of matching the rest of the string with
(.*)\>
I used the negated character class ^>. Again, the .* is greedy, so it could have matched other img tags on the same line, for that mater, it could have matced anything on the same line.

The 15 year old, freshman programmer
Stephen Rawls

Replies are listed 'Best First'.
Re: Re: Help with reg expressions
by Anonymous Monk on May 04, 2001 at 00:36 UTC
    Whoops, major type. In this line I submited:
    s/\<img\s*src\s*=[^->]-disclose.gif[^>]*>//g;
    You need to change this:
    [^->]
    to this:
    [^->]+
    Sory About that.

    The 15 year old, freshman programmer
    Stephen Rawls