Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

Re^2: Highlight a substring

by the_0ne (Pilgrim)
on Apr 06, 2005 at 17:02 UTC ( #445370=note: print w/replies, xml ) Need Help??

in reply to Re: Highlight a substring
in thread Highlight a substring

I have more of a question than a comment. The first thing I would have thought to do was this...
my $string1 = 'realy long string of html and here is the word long aga +in'; my $string2 = 'long'; + $string1 =~ s/($string2)/<b>$1<\/b>/g; + print "string1: $string1\n";

I know tmtowtdi, but is there another reason that the 2 responses to MonkPaul's question didn't involve s///g?

Thanks again oh wise monks.

Replies are listed 'Best First'.
Re^3: Highlight a substring
by ikegami (Pope) on Apr 06, 2005 at 18:09 UTC
    index is much faster than m// when matching a constant string. I'm guessing index + substr is similarly faster than s///. Feel free to benchmark the two.

    By the way,
    $string1 =~ s/($string2)/<b>$1<\/b>/g;
    should be replaced with
    $string1 =~ s/(\Q$string2\E)/<b>$1<\/b>/g;
    in case $string2 contains special characters. Better yet,
    $string1 =~ s/((?:\Q$string2\E)+)/<b>$1<\/b>/g;
    should be a little bit faster.

    I'd also Benchmark the following which has fewer concatenations:

    $string1 =~ s#(?=(?:\Q$string2\E)+)#<b>#g; $string1 =~ s#(?<=(?:\Q$string2\E)+)#</b>#g;

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://445370]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (6)
As of 2017-01-19 21:56 GMT
Find Nodes?
    Voting Booth?
    Do you watch meteor showers?

    Results (172 votes). Check out past polls.