регулярне вираження в grep

Я намагаюся зіставити дійсну IP-адресу за допомогою регулярного виразу. Я маю вираз, але проблема полягає в тому, що я не можу зрозуміти поведінку grep.

щоб відповідати числам в діапазоні 0-255, я зробив: ехо 15 | grep-E "[01]? [0-9] [0-9]? | 25 [0-5] | 2 [0-4] [0-9]"

Але це відповідає всім цифрам!

Наприклад 3000 також відповідає - я думаю, що це, тому що він відповідає "30", який є частиною цілого ряду 3000 ... тоді я спробував  grep-E "([01]? [0-9] [0-9]? | 25 [0-5] | 2 [0-4] [0-9]) $"

(намагаюся відповідати 0-255, а потім закінчити рядок) .. Але це, здається, не працює. будь-які пропозиції??

Is it valid to to put parenthesis to separate parts of regular expression? some thing like this -> ((a|b)c)(l|m)

0

1 Відповіді

 echo 15 | grep -E "^([01]?[0-9][0-9]?|25[0-5]|2[0-4][0-9])$"
1
додано