正则表达式替换的问题【已解决】
本帖最后由 austere 于 2014-8-11 09:44 编辑<option value="142" >142.香港A型专用主机X10 (香港:21.209.11.20/10/121)</option>
<br>要求用正则替换成<option value="142" >142.香港A型专用主机X10 (香港:21.209.11.20香港:21.209.11.10香港:21.209.11.121)</option>
<br>原字符串(香港:21.209.11.20/10/121)中/个数不固定,例如(香港:21.209.11.20/10/121/12/23) $str='<option value="142" >142.香港A型专用主机X10 (香港:21.209.11.20/10/121)</option>' & @CRLF & _
'<option value="143" >143.台湾A型专用主机X20 (台湾:123.22.111.2/110/198)</option>'
ConsoleWrite($str&@CRLF)
$arr=StringRegExp($str,"(?is)(([^\(:]*\:(?:\d+\.){3})\d+(?:\/\d+)+)",3)
If Not @error Then
For $n=0 To UBound($arr)-1 Step 2
$str=StringReplace($str,$arr[$n],StringReplace($arr[$n],"/",$arr[$n+1]))
Next
EndIf
ConsoleWrite($str&@CRLF)这样试下,占用与非占用是一个矛盾,暂时只想到这样处理的方法 正则再组合可以不?[\d+\.]+\.|/?(\d+)替换一直不会用~悲催 回复 2# kevinch
感谢~虽然不是替换,不够能解决问题了~ 回复 3# haijie1223
感谢大神来关注帖子.....我也是不会替换~~ 回复 5# austere
我哪是什么大神,只是一个很菜的菜鸟~Dim $str, $string, $num, $ip1, $ip2, $nstr
$string = _
' <option value="142" >142.香港A型专用主机X10 (香港:21.209.11.20/10/121)</option>' & @CRLF & _
' <option value="142" >142.香港A型专用主机X10 (香港:21.209.11.51/25/5/68/9)</option>' & @CRLF & _
' <option value="142" >142.香港A型专用主机X10 (香港:21.209.11.89/16/75/87/64)</option>' & @CRLF & _
' <br>'
$num = StringSplit($string, @CR)
For $i = 1 To $num
$ip1 = StringRegExp($num[$i], "\((.*?)\)", 3)
If Not @error Then
$str = ""
$ip2 = StringRegExp($ip1, ".*?:[\d+\.]+\.|/?(\d+)", 3)
For $k = 1 To UBound($ip2) - 1
$str &= $ip2 & $ip2[$k]
Next
EndIf
$num[$i] = StringRegExpReplace($num[$i], "\(.*?\)", "(" & $str & ")")
$nstr &= $num[$i] & @CR
Next
ConsoleWrite($nstr & @CRLF)
页:
[1]