s/\bold\b/new/gi;
# 1: replaces all instances of the string, e.g. "old",
# "OLD", "Old", "OlD" on either side with "new".
s/\bold\b/new/g;
# 2: replaces "old" with "new" -- case sensitive here.
s/\bOLD\b/NEW/g;
# 3: replaces "OLD" with "NEW"
s/\bOLD\b/NEW/gi;
# 4: replaces same variants of "OLD" as in 1 with "NEW"
####
#!/usr/bin/perl
use YAPE::Regex::Explain;
print YAPE::Regex::Explain->new(qr/\bold\b/i)->explain;
####
The regular expression:
(?i-msx:\bold\b)
matches as follows:
NODE EXPLANATION
----------------------------------------------------------------------
(?i-msx: group, but do not capture (case-insensitive)
(with ^ and $ matching normally) (with . not
matching \n) (matching whitespace and #
normally):
----------------------------------------------------------------------
\b the boundary between a word char (\w) and
something that is not a word char
----------------------------------------------------------------------
old 'old'
----------------------------------------------------------------------
\b the boundary between a word char (\w) and
something that is not a word char
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------