找回密码
 加入
搜索
查看: 3406|回复: 6

[AU3基础] 正则:只提取IP的数字问题?

  [复制链接]
发表于 2010-12-16 10:19:45 | 显示全部楼层 |阅读模式
#include  <array.au3>
Local $Num="192.168.1.10"
;Local $Result=StringRegExp($Num,'[^.]*',3)
Local $Result=StringRegExp($Num,'\d+(?!.)',3)
_ArrayDisplay($Result)
用Local $Result=StringRegExp($Num,'[^.]*',3)可以提出192.168.1.10中的数字.但也提出了 4个空格.
用'\d+(?!.)',只提出了10.
我只想提出192 168 1 10这4个数字部分.
发表于 2010-12-16 10:26:03 | 显示全部楼层
正则教程中有提到匹配IP地址的表达式:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
发表于 2010-12-16 11:00:46 | 显示全部楼层
如果字符串仅包含Ip地址 \d+ 即可,因为并不需要判断其合法性
 楼主| 发表于 2010-12-16 14:22:01 | 显示全部楼层
回复 2# 水木子
谢谢,我想用(?!.)练习将IP地址的数字部分提出来,但没有成功?
另外,以下代码提出的也不准确?
#include  <array.au3>
Local $Num="192.168.1.10"
;Local $Result=StringRegExp($Num,'[^.]*',3)
Local $Result=StringRegExp($Num,'((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)',3)
_ArrayDisplay($Result)
 楼主| 发表于 2010-12-16 14:24:18 | 显示全部楼层
回复 3# afan

\d+解决了,我一直想用(?!.)解决的?只是还没有答案?
另外,想[^.]*怎么能作到不匹配空格啊?就是1楼的那个例子.
发表于 2010-12-16 17:54:55 | 显示全部楼层
[^.]+ 这样可以
\d+(?!.) 没意义
 楼主| 发表于 2010-12-17 08:47:35 | 显示全部楼层
回复 6# afan
如果用[^.]*就多匹配出4个空格!
不知道这样理解是否正确:
*表示匹配0次或n次,当*匹配是0次时,[^.]没有了匹配对象就只能匹配"空格或制表符"了,所以多出4个空格;
将*换成+,它至少匹配1次,那么[^.]就有了匹配对象,所以不可能出现空格了.
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-21 16:19 , Processed in 0.085191 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表