2011-10-28 62 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])$"