in reply to exact word match

If you have a list of words that should not match, a list of stop words, there are modules to help you build an efficient regex pattern

Regexp::Assemble/Regexp::Trie/Regex::PreSuf

#!/usr/bin/perl -- use strict; use warnings; use Regexp::Assemble; use Regexp::Trie; use Regex::PreSuf qw' presuf '; my @AUBBC_TAGS = qw( master model dbccdb sybsecurity sybsystemdb sybsystemprocs tempdb DBA ); @AUBBC_TAGS = sort @AUBBC_TAGS ; print "\n\n"; { my ($re) = Regexp::Assemble->new; $re->add($_) for @AUBBC_TAGS; $re = $re->re; print "$re\n\n"; } { my ($re) = Regexp::Trie->new; $re->add($_) for @AUBBC_TAGS; $re = $re->regexp; print "$re\n\n"; } print presuf(@AUBBC_TAGS), "\n\n"; __END__ (?-xism:(?:sybs(?:ystem(?:procs|db)|ecurity)|(?:dbcc|temp)db|m(?:aster +|odel)|DBA)) (?-xism:(?:DBA|dbccdb|m(?:aster|odel)|sybs(?:ecurity|ystem(?:db|procs) +)|tempdb)) (?:DBA|dbccdb|m(?:aster|odel)|sybs(?:ecurity|ystem(?:db|procs))|tempdb +)