怎样用一条PCRE正则表达式提取IP为76.16.17.81~76.16.17.84之外的所有IP
正则表达式是没有求余集操作符的,你得自己展开,所以大概会类似于
【怎样用一条PCRE正则表达式提取IP为76.16.17.81~76.16.17.84之外的所有IP】 (\\d{0,2}|7)(\\.\\d+){3}|
76\\.(\\d{0,2}|1\\d{0,1}|16\\d)(\\.\\d+){2}|
76\\.16\\....|
76\\.16\\,.17\\....
后面太麻烦了自己写
■网友
我是PHP程序员,最近黑PHP的比较多,我写出来的话,不会被打吧。......^(?!76\\.16\\.17\\.8)(25|2|??)\\.(25|2|??)\\.(25|2|??)\\.(25|2|??)$PCRE里有个环视(Lookaround),来判断你不要的那个IP段的第一个字符的位置,剩下的,就交给合法IP段的判断表达式了。php preg系列函数测试通过$arr = array( \u0026#39;1\u0026#39;, //不是合法IP格式 \u0026#39;2.2\u0026#39;, //不是合法IP格式 \u0026#39;3.3.3\u0026#39;, //不是合法IP格式 \u0026#39;1.1.1.1\u0026#39;, //没错,就是你 \u0026#39;76.16.17.81\u0026#39;, //合法IP格式,但楼主讨厌它 \u0026#39;76.16.17.82\u0026#39;, //合法IP格式,但楼主讨厌它 \u0026#39;76.16.17.83\u0026#39;, //合法IP格式,但楼主讨厌它 \u0026#39;76.16.17.84\u0026#39;, //合法IP格式,但楼主讨厌它 \u0026#39;76.16.17.85\u0026#39;, //没错,就是你 \u0026#39;100.100.100.100\u0026#39;, //没错,就是你 \u0026#39;256.256.256.256\u0026#39; //不是合法IP格式);foreach ($arr as $v){ if (preg_match(\u0026#39;/^(?!76\\.16\\.17\\.8)(25|2|??)\\.(25|2|??)\\.(25|2|??)\\.(25|2|??)$/\u0026#39;, $v)) { echo $v,"\"; } }
■网友
现有的正则表达式语法不支持 交 和 差,不过正则语言在 并交差补 操作下都是封闭的,我写了一个DFA正则引擎,支持并交差补,详情可参见: http://nfabo.cn
■网友
把IP转化成int貌似更简单些,便宜楼主,碰巧有现成代码import socketdef ip2num(addr): # parse the address string into integer quads quads = map(ord, socket.inet_aton(addr)) # spread the quads out return reduce(lambda x,y: x * 0x100 + y, quads)def num2ip(num): return "%d.%d.%d.%d" % (num/0x1000000, num%0x1000000/0x10000, num%0x10000/0x100, num%0x100)#num2ip(ip2num("76.16.17.81"))upper_bound = ip2num("76.16.17.84")lower_bound = ip2num("76.16.17.81")for i in xrange(ip2num("255.255.255.255")): if i \u0026gt; upper_bound or i \u0026lt; lower_bound: print num2ip(i)
■网友
由轮子哥启发:.+|\\d.+|.{3}.+|.{4}.+|....{10}中间不换行,中间有省略,就是逐位取否,然后 或运算76.16.17.81~76.16.17.84
■网友
ip转int,然后比大小,正则不合适处理数据值大小这个事情
■网友
反正你的范围小,先把所有IP弄出来,判断一下是不是在你的范围内
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 怎样成为一名合格的Python程序员?
- 怎样评价华为、诺基亚、中兴中标中国移动高端路由交换设备扩容集采
- 怎样评价类似前橙会、百老汇、南极圈这样类型的离职帮抱团,对企业的积极意义和消极意义
