Найти все строки, кроме одной строки, с помощью regex Я хочу сопоставить все строки, кроме строки "ABC". Пример: "A" --> Match "F" --> Match "AABC" --> Match "ABCC" --> Match "CBA" --> Match "ABC" --> No match Я попытался с [^ABC], но он игнорирует "CBA" (и другие). Ответ 1 ^(?!ABC$).* соответствует всем строкам, кроме ABC. Ответ 2 Судя по вашим примерам, я думаю, вы имеете в виду "все строки, кроме тех, которые содержат слово ABC". Попробуйте следующее: ^(?!.*\bABC\b) Ответ 3 Инвертировать совпадение с GNU Grep Вы можете просто инвертировать совпадение с использованием границ слов и конкретной строки, которую вы хотите отклонить. Например: $ egrep --invert-match '\bABC\b' /tmp/corpus "A" --> Match "F" --> Match "AABC" --> Match "ABCC" --> Match "CBA" --> Match Это отлично работает на вашем предоставленном корпусе. Ваш пробег может отличаться для других (или более сложных) случаев использования.
Ответ 2 Судя по вашим примерам, я думаю, вы имеете в виду "все строки, кроме тех, которые содержат слово ABC". Попробуйте следующее: ^(?!.*\bABC\b)
Ответ 3 Инвертировать совпадение с GNU Grep Вы можете просто инвертировать совпадение с использованием границ слов и конкретной строки, которую вы хотите отклонить. Например: $ egrep --invert-match '\bABC\b' /tmp/corpus "A" --> Match "F" --> Match "AABC" --> Match "ABCC" --> Match "CBA" --> Match Это отлично работает на вашем предоставленном корпусе. Ваш пробег может отличаться для других (или более сложных) случаев использования.