Подтвердить что ты не робот

Найти все строки, кроме одной строки, с помощью regex

Я хочу сопоставить все строки, кроме строки "ABC". Пример:

 "A"     --> Match
 "F"     --> Match
 "AABC"  --> Match
 "ABCC"  --> Match
 "CBA"   --> Match
 "ABC"   --> No match

Я попытался с [^ABC], но он игнорирует "CBA" (и другие).

4b9b3361

Ответ 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

Это отлично работает на вашем предоставленном корпусе. Ваш пробег может отличаться для других (или более сложных) случаев использования.