正则:只提取IP的数字问题?
#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个数字部分. 正则教程中有提到匹配IP地址的表达式:((2\d|25|?\d\d?)\.){3}(2\d|25|?\d\d?) 如果字符串仅包含Ip地址 \d+ 即可,因为并不需要判断其合法性 回复 2# 水木子
谢谢,我想用(?!.)练习将IP地址的数字部分提出来,但没有成功?
另外,以下代码提出的也不准确?#include<array.au3>
Local $Num="192.168.1.10"
;Local $Result=StringRegExp($Num,'[^.]*',3)
Local $Result=StringRegExp($Num,'((2\d|25|?\d\d?)\.){3}(2\d|25|?\d\d?)',3)
_ArrayDisplay($Result) 回复 3# afan
\d+解决了,我一直想用(?!.)解决的?只是还没有答案?
另外,想[^.]*怎么能作到不匹配空格啊?就是1楼的那个例子. [^.]+ 这样可以
\d+(?!.) 没意义 回复 6# afan
如果用[^.]*就多匹配出4个空格!
不知道这样理解是否正确:
*表示匹配0次或n次,当*匹配是0次时,[^.]没有了匹配对象就只能匹配"空格或制表符"了,所以多出4个空格;
将*换成+,它至少匹配1次,那么[^.]就有了匹配对象,所以不可能出现空格了.
页:
[1]