Хорошо, я усовершенствовал свое регулярное выражение на основе решения, которое вы придумали (которое ошибочно совпадает со строками, начинающимися с «test»).
^((?!foo).)*$
Это регулярное выражение будет соответствовать только строкам, которые не содержат foo. Первый запрос запретит строки, начинающиеся с 'foo', а второй убедится, что foo не найден в других местах строки.
Я уже отвечал на этот вопрос для кого-то, см. Эти ссылки:
Создайте выражение, которое соответствует, и используйте! Match () ... (логическое отрицание) Это, вероятно, так или иначе делает grep ...
На основе ответа Дэниела, я думаю, у меня есть кое-что, что работает:
^(.(?!test))*$
Ключ в том, что вам нужно сделать отрицательное утверждение для каждого символа в строке
Это действительно почти дубликат. Думаю, вы ищете регулярное выражение
(?! foo). *