Advanced Regular Expression Patterns
Word Boundaries
Word boundaries help a global search count whole tokens instead of substrings.
word-boundaries
Use word boundaries when the pattern should match a token by itself and skip the same letters inside a larger word.
Word Boundaries
word_boundaries.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;
my $text = "cat scatter cat";
my $count = 0;
my $last_pos = 0;
while ($text =~ /\bcat\b/g) {
$count = $count + 1;
$last_pos = pos($text);
}
print "text=$text\n";
print "count=$count\n";
print "last_pos=$last_pos\n";
use strict;
use warnings;
my $text = "catalog cat";
my $count = 0;
my $last_pos = 0;
while ($text =~ /\bcat\b/g) {
$count = $count + 1;
$last_pos = pos($text);
}
print "text=$text\n";
print "count=$count\n";
print "last_pos=$last_pos\n";
use strict;
use warnings;
my $text = "dog catalog";
my $count = 0;
my $last_pos = 0;
while ($text =~ /\bcat\b/g) {
$count = $count + 1;
$last_pos = pos($text);
}
print "text=$text\n";
print "count=$count\n";
print "last_pos=$last_pos\n";
$text ← cat scatter cat, $count ← 0, $last_pos ← 0
4my $text→ cat scatter cat = "cat scatter cat"; #@text="catalog cat", "dog catalog"5my $count→ 0 = 0;6my $last_pos→ 0 = 0;$count ← 1, $last_pos ← 3
pass 1 of 28while ($textcat scatter cat =~ /\bcat\b/g) {9 $count→ 1 = $count + 1;10 $last_pos→ 3 = pos($textcat scatter cat);11}$count ← 2, $last_pos ← 15
pass 2 of 28while ($textcat scatter cat =~ /\bcat\b/g) {9 $count→ 2 = $count + 1;10 $last_pos→ 15 = pos($textcat scatter cat);11}print "text=$text ";
13print "text=$textcat scatter cat\n";14print "count=$count2\n";15print "last_pos=$last_pos15\n";outputtext=cat scatter cat count=2 last_pos=15
$text ← catalog cat, $count ← 0, $last_pos ← 0
4my $text→ catalog cat = "catalog cat";5my $count→ 0 = 0;6my $last_pos→ 0 = 0;$count ← 1, $last_pos ← 11
8while ($textcatalog cat =~ /\bcat\b/g) {9 $count→ 1 = $count + 1;10 $last_pos→ 11 = pos($textcatalog cat);11}print "text=$text ";
13print "text=$textcatalog cat\n";14print "count=$count1\n";15print "last_pos=$last_pos11\n";outputtext=catalog cat count=1 last_pos=11
$text ← dog catalog, $count ← 0, $last_pos ← 0
4my $text→ dog catalog = "dog catalog";5my $count→ 0 = 0;6my $last_pos→ 0 = 0;78while ($text =~ /\bcat\b/g) {9 $count = $count + 1;10 $last_pos = pos($text);11}1213print "text=$textdog catalog\n";14print "count=$count0\n";15print "last_pos=$last_pos0\n";outputtext=dog catalog count=0 last_pos=0