単語単位の論理積の否定?(先読みの正規表現)

タイトルを見てもなんのことかさっぱりわからないと思います。
自分でもどう説明すればいいのかわかりませんので、簡単な例を。

  • あなたが強い人と闘いたいとします。
  • で、「孫」という性の人は強いんじゃないかと考えたとします。
  • でも「孫悟空」と「孫悟飯」は強すぎるから闘いたくないとします。

そんな時の正規表現です。

#!/usr/bin/perl

use utf8;
use Encode;
use Test::More tests => 5;

# 悟空と悟飯は強いから嫌な正規表現!
my $regex = "孫(?!(悟空|悟飯))";

print encode_utf8("強いヤツと闘いたい!\n");

like("孫悟天", qr/$regex/,encode_utf8("悟天なら大丈夫かも?"));
unlike("孫悟空", qr/$regex/,encode_utf8("悟空は強いからいや!"));
unlike("孫悟飯", qr/$regex/,encode_utf8("悟飯も強いからいや!"));
like("孫", qr/$regex/,encode_utf8("ただの孫さんなら闘う!"));
like("孫正義", qr/$regex/,encode_utf8("VS Softbank!"));

以下、実行結果です。

localhost% perl regex.pl
1..5
強いヤツと闘いたい!
ok 1 - 悟天なら大丈夫かも?
ok 2 - 悟空は強いからいや!
ok 3 - 悟飯も強いからいや!
ok 4 - ただの孫さんなら闘う!
ok 5 - VS Softbank!

使用している「?!」は、先読みの正規表現というらしいです。(「?=」の否定条件)
イマイチこの言葉は理解出来ていません。。(先読み???)


*実際には文章中にある、「サーバー」ではない「サーバ」や、「コンピューター」ではない「コンピュータ」を、一つの正規表現でマッチングさせたかったのでした。