2011-10-28 66 views
0

我試圖用一個正則表達式匹配一個有效的IP地址。我有一個表達式問題是我無法理解grep行爲。grep中的正則表達式

匹配0-255範圍內的數字我做了: echo 15 | grep -E「[01]?[0-9] [0-9]?| 25 [0-5] | 2 [0-4] [0-9]」

但它匹配所有數字!

例如3000也匹配 - 我認爲它是因爲匹配整個字符串3000的一部分的「30」...然後我嘗試了 grep -E「[[01]?[0-9] [0 -9]?| 25 [0-5] | 2 [0-4] [0-9])$「

(試圖匹配0-255,然後是行尾) 但是,似乎工作。有什麼建議麼??

將括號分隔開正則表達式的部分是否有效? ((a | b)c)(l | m)

回答

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