请告知我的语法错误,以及为什么以下正则表达式不起作用
这个例子是在bash shell下测试的:
echo 12.212.12.198 | grep "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]| [1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"
所有IP的相同,如192.9.200.12,172.18.12.34等......
答案 0 :(得分:1)
您缺少-E
(PATTERN是扩展正则表达式(ERE))
这是google
上的一个好工作:
grep -E "^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$"
这是([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])
的四个部分,就像这样工作
[1-9] # 1-9
[1-9][0-9] # 10-99
1[0-9][0-9] # 100-199
2[0-4][0-9] # 200-249
25[0-5] # 250-255
前导0
无效,因此如果有前导0