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 |