in reply to regex match word , don't match word preceeded by slash

I've expanded the solution so it's a bit easier to read:

$string =~ s{ (?<![-\w./]) ( \s? [-\w.]* $item [-\w.]* \s? ) }{<b>$1<\/b>}gimsx;

Test output:

$ regex_slash_prob.pl <a href="/cgi-programming-with-perl.zip"><b>cgi-programming-with-perl. +zip</b></a>

Update:

While the solution above answers your question, consider the following.

If the HTML actually looks more like this:

my $string = qq| <a href="/cgi-programming-with-perl.zip"> cgi-programming-with-perl.zip </a> |;

Your output will look like:

<a href="/cgi-programming-with-perl.zip"> <b> cgi-programming-with-perl.zip </b> </a>

If you'd prefer it to look like:

<a href="/cgi-programming-with-perl.zip"> <b>cgi-programming-with-perl.zip</b> </a>

Remove both \s? lines, leaving:

$string =~ s{ (?<![-\w./]) ( [-\w.]* $item [-\w.]* ) }{<b>$1<\/b>}gimsx;

You had them in your original so I left them in thinking they perhaps served some other purpose in the real data you're working on (as the string you posted contained no whitespace at all).

-- Ken

Replies are listed 'Best First'.
Re^2: regex match word , don't match word preceeded by slash
by lepetitalbert (Abbot) on Nov 19, 2010 at 02:40 UTC

    Hi kcott,

    works like a charm !
    thank you very much :)

    Have a nice day !

    "There is only one good, namely knowledge, and only one evil, namely ignorance." Socrates