例えば qmail になっていない qmail (Qmail とか QMAIL とか…)を見つけたい /qmail/ だと、逆 /qmail/ の否定や /[^(qmail)]/ だと、全く関係ないものもマッチする なので /(?!qmail)(?i:qmail)/ あたりでチェック (?!pattern) は否定先読みで、以降にpatternが無い位置にマッチ (?mode:pattern) は局所オプションで、カッコ内だけ mode(大文字小文字無視: i) でpatternにマッチ よって「以降に "qmail(小文字)" がない位置から、大文字小文字無視の "qmail"」にマッチする。 否定先読みによって小文字のみにはマッチせず、大文字小文字の混ざったものだけにマッチする。 まぁ、正規表現使わずに文字列比較演算子で処理するか、2回に分けてもいいけど。 not /qmail/ and /qmail/i