Mastering Regular Expressions
Listings from page 78
Chapter 2; page 78 (download)
$/ = ".\n"; # Sets a special ``chunk-mode''; chunks end with a period-newline combination
while (<>)
{
next unless s{# (regex starts here)
### Need to match one word:
\b # Start of word . . . .
( [a-z]+ ) # Grab word, filling $1 (and \1).
### Now need to allow any number of spaces and/or <TAGS>
( # Save what intervenes to $2.
(?: # (Non-capturing parens for grouping the alternation)
\s # Whitespace (includes newline, which is good).
| # -or-
<[^>]+> # Item like <TAG>.
)+ # Need at least one of the above, but allow more.
)
### Now match the first word again:
(\1\b) # \b ensures not embedded. This copy saved to $3.
#(regex ends here)
}
# Above is the regex. The replacement string is below, followed by the modifiers, /i, /g, and /x
{\e[7m$1\e[m$2\e[7m$3\e[m}igx;
s/^(?:[^\e]*\n)+//mg; # Remove any unmarked lines.
s/^/$ARGV: /mg; # Ensure lines begin with filename.
print;
} |
Fetch additional Third-Edition listings and data: