AQ>>Надо именно одним регекспом S>А строки произвольные?
Да, конечно. Я просто не могу сообразить, как сделать отрицание. Было бы можно как для классов символов делать s =~ /contains.*[^(not contains)]/ — но не работает же, not contains воспринимается как множество символов... Тут еще одна проблема — с относительным порядком contains и not contains, ну да пофиг.
Переформулирую задачу. Достаточно просто узнать, как через оператор =~ сделать запрос "дай строки, НЕ содержащие XXX". Использование оператора !~ невозможно.