При запуске этих команд, я получаю такой вывод:Почему эти регулярные выражения не работают должным образом?
Вот команды и выход в текстовой форме:
$ cat exte
i
ii
iii
iiii
iiiii
iiiiii
Это прекрасно работает:
$ egrep --color i\{4,5\} exte
iiii
iiiii
iiiiii
Я предполагаю, что он должен показывать цвет только один или два «i» строки, но в выходных цветах все:
$ egrep --color i\{1,2\} exte
i
ii
iii
iiii
iiiii
iiiiii
Точно так же, я не могу видеть расширенное регулярное выражение работает здесь:
$ egrep --color i? exte
i
ii
iii
iiii
iiiii
iiiiii
$ egrep --color i+ exte
i
ii
iii
iiii
iiiii
iiiiii
Используйте границы слова. –
Jup, с i {1,2} вы получаете несколько совпадений для одной и той же строки. Поэтому либо используйте границу слова, либо используйте^i {1,2} $, поэтому он учитывает также начало и конец строки. – LukStorms
, а для двух последних примеров с i + и i?, Строки содержат несколько i каждого единственного соответствия (не более или более) (?) Или (один или более) (+), поэтому все правильно, объясните, что/почему именно вы ожидаете –