/ / Przetłumacz to, jeśli instrukcja in na regex - regex, regex-negation

Przetłumacz tę instrukcję, jeśli chcesz wypisać wyrażenie - regex, regex-negation

Musiałem przetłumaczyć następującą instrukcję if na wyrażenie regularne, abyśmy mogli użyć jej na całym ciągu

if (buffer[i] < 32 && !(buffer[i] == "t" || buffer[i] == "r" || buffer[i] == "n"))
buffer[i] = " ";

Co zrobiłem, robiąc to

return Regex.Replace(base.ReadLine(), "[-x08x0Bx0Cx0E-x1F]", " ");

Jednak nie podoba mi się to, jak wygląda, czy istnieje regex, aby zrobić to samo, co zrobiłem w instrukcji if? Zasadniczo

[-x1f]~[trb]

Gdzie ~ pójdzie coś, co oznacza „wyklucz następujące” (nie musi to być ta dokładna składnia, zastanawiałem się tylko, czy jest coś takiego?)

Odpowiedzi:

1 dla odpowiedzi № 1

Spójrz tutaj - mówi o negacjach wyrażeń regularnych. Nie jestem pewien, czy może ci to bezpośrednio pomóc, ale jest to najlepsze, co mam.


1 dla odpowiedzi nr 2

Jeśli nie podoba ci się wygląd wyrażenia regularnego, możesz użyć czegoś takiego /(?![trn])[x00-x1F]/. Pierwsza część, (?![trn]), mówi, że nie powiedzie się, jeśli następny znak pasuje [trn], a następnie druga część [x00-x1F] mówi, aby dopasować dowolny znak <= 0x1F.


0 dla odpowiedzi № 3

Aby coś zanegować, użyj [^trb]. Możesz także spróbować negatywne spojrzenia ale ten pierwszy jest prostszy IMHO.