Кроме того, хотите верьте, хотите нет, вы можете написать регулярное выражение, которое соответствует всем буквенно-цифровым строкам, кроме «help».Регулярное выражение ([a-zA-Z0-9]+)/?&~help
может быть переписано в регулярное выражение, которое не использует операторы &
и ~
(и не) (не широко доступны).
Регулярное выражение выглядит как собачий завтрак, и поэтомуВы действительно не хотите этого делать.Но вот как.
Во-первых, все более короткие буквенно-цифровые коды совпадают.«hel» является приемлемой проблемой, и ни одна другая трехбуквенная / цифровая последовательность:
[a-zA-Z0-9]{1,3}
Мы также можем распознавать последовательности из пяти или более символов;они также не «помогают», включая это:
[a-zA-Z0-9]{5,}
Теперь начинается сложная часть, соответствующая четырехбуквенным последовательностям, которые не помогают.Это означает любые четыре символа, которые не начинаются с h
, или любые четыре символа, которые не имеют e
в качестве второй буквы.Etc:
[a-gi-zA-Z0-9][a-zA-Z0-9]{3}
[a-zA-Z0-9][a-df-zA-Z0-9][a-zA-Z0-9]{2}
[a-zA-Z0-9]{2}[a-km-zA-Z0-9][a-zA-Z0-9]
[a-zA-Z0-9]{3}[a-oq-zA-Z0-9]
Единственный шаблон из четырех символов, который не соответствует ни одному из них, - это слово «помощь».Он не соответствует первому из-за h, второй из-за e и т. Д.
Итак, объединяя их все вместе с |и закрепление.Сделайте глубокий вдох:
^([a-zA-Z0-9]{1,3}|[a-zA-Z0-9]{5,}|[a-gi-zA-Z0-9][a-zA-Z0-9]{3}|[a-zA-Z0-9][a-df-zA-Z0-9][a-zA-Z0-9]{2}|[a-zA-Z0-9]{2}[a-km-zA-Z0-9][a-zA-Z0-9]|[a-zA-Z0-9]{3}[a-oq-zA-Z0-9])$
Это должен быть новый ключ канала для #unix
в сети IRC EFNet.:)
Я собираюсь проверить это?Что ты чокнутый ...
Конечно я сделал, но с седом.Совсем немного.Большинство метасимволов нужно экранировать, упс:
$ sed -n -e '/^\([a-zA-Z0-9]\{1,3\}\|[a-zA-Z0-9]\{5,\}\|[a-gi-zA-Z0-9][a-zA-Z0-9]\{3\}\|[a-zA-Z0-9][a-df-zA-Z0-9][a-zA-Z0-9]\{2\}\|[a-zA-Z0-9]\{2\}[a-km-zA-Z0-9][a-zA-Z0-9]\|[a-zA-Z0-9]\{3\}[a-oq-zA-Z0-9]\)$/p'
a <- typed
a
aa <- typed
aa
aaa <-
aaa
aaaa <-
aaaa
aaaaa <-
aaaaa
help <- aha, no response from sed
aelp <-
aelp
helper <-
helper