online041 发表于 2010-4-12 10:22:33

IP地址理解表达式

本帖最后由 online041 于 2010-4-13 01:49 编辑

各位版主高手们您好
本人是个新手刚刚看了个表发方式30分就是想问一下这代码可以这么理解吗
(2\d|25|?\d\d?)
我的理解就是把这段源码分成三段这样对吗
25 250-255 之间
2 200-249之间
?\d\d? 1-199之间
意思就是说
(2\d|25|?\d\d?)
是一个是一个数不过1-255中分三个阶段

整个代码
((2\d|25|?\d\d?)\.){3}(2\d|25|?\d\d?)
如果错的可以告诉我应该怎么理解这段代码

nmgwddj 发表于 2010-4-12 10:59:01

我就根本没理解过来。

:face (9):

rence 发表于 2010-4-12 10:59:31

还有这种方式格式IP地址的啊?
不明白,关注。

afan 发表于 2010-4-12 12:40:44

各位版主高手们您好
本人是个新手刚刚看了个表发方式30分就是想问一下这代码可以这么理解吗
(2\d|25 ...
online041 发表于 2010-4-12 10:22 http://www.autoitx.com/images/common/back.gif


    除了 25 250-250 之间 这句(笔误?),应该是25 250-255之间。其它的都ok

online041 发表于 2010-4-13 01:47:20

不好意思(笔误) 因为想了半天没想明白

online041 发表于 2010-4-13 22:55:57

:face (28):走马观花

sensel 发表于 2010-4-14 06:51:32

我习惯的写法:
^((25|2\d|?\d?\d)\.){3}(25|2\d|?\d?\d)$

我把它拆开来理解:
^和$ 匹配字符串开始位和结束位
25 匹配250-255。[]内部是字符集,表示字符集内的任一位,下同。0-5即数字0-5范围。
2\d 匹配200-249。\d匹配一位数字,下同。
?\d?\d) 匹配 0-199。?表示前位可能重复0或1次,0次其实是不存在。
用|字符分开成3部分,整组用()括起来,表示这是一个整体,只要匹配任一部分即可。
\.就是.,因为.在正则里表示任一字符,所以.要写作\.。
{3}就是前面()里的内容重复3次。也就是匹配 0.0.0. 至 255.255.255.。
后面的内容跟前面相同,就是 0-255。
全部组合,这个表达式匹配 0.0.0.0 至 255.255.255.255,刚好是有效IP地址。


正则是很强大的,这几天比较au3新版和旧版的更改部分,在File.au3里发现下面这条,直接去掉路径尾部可能存在的\和/字符:
$sPath = StringRegExpReplace($sPath, "[\\/]+\z", "")
相比下面这种以前的写法,用正则既简洁又高效。
If StringRight($sPath, 1) = "\" OR StringRight($sPath, 1) = "/" Then $sPath = StringTrimRight($sPath, 1)

online041 发表于 2010-4-14 16:16:49

终于清楚点了
页: [1]
查看完整版本: IP地址理解表达式