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