关于字符替换问题
本帖最后由 a000000 于 2010-1-7 20:26 编辑0.txt内容如下:
11111111
22222222
33333333
44444444
55555555
66666666
77777777
88888888
99999999
dsafsdafsda 127.0.0.1123.133.33.98:8563
00000000
000000000000
其中ip:123.133.33.98为一个变量数值,要求每次都替换这个ip别的都不动,请高手指点,想了很多方法都无法完美的只替换那一个ip 8563动不动? 本帖最后由 a000000 于 2010-1-7 15:59 编辑
8563不动,别的都不动,8563是个端口,只是那个ip是动态的,实际文件中下面还有好多行 回复 1# a000000
123.133.33.98后面应该是:而不是:吧 $Str = _
'11111111' & @CRLF & _
'22222222' & @CRLF & _
'33333333' & @CRLF & _
'44444444' & @CRLF & _
'55555555' & @CRLF & _
'66666666' & @CRLF & _
'77777777' & @CRLF & _
'88888888' & @CRLF & _
'99999999' & @CRLF & _
'' & @CRLF & _
'dsafsdafsda 127.0.0.1123.133.33.98:8563' & @CRLF & _
'00000000' & @CRLF & _
'000000000000'
Msgbox(0, '原始', $str)
$ip = '255.255.255.255'
Msgbox(0, '修改', StringRegExpReplace($str, '[^\s]+(?=\:\d+)', $ip)) $file = FileOpen("1.txt", 0)
$chars = FileRead($file)
FileClose($file)
$nOffset = 1
While 1
$ip = StringRegExp($chars,'((2\d|25|?\d\d?)\.){3}(2\d|25|?\d\d?)', 2,$nOffset)
If @error = 0 Then
$nOffset = @extended
Else
ExitLoop
EndIf
$port = StringMid($chars,$nOffset+1,4)
If $ip <> '127.0.0.1' And $port = '8563' Then
;~ MsgBox(0, $port , $ip)
$chars = StringReplace($chars, $ip , "97.121.124.125")
$file = FileOpen("1.txt", 2)
FileWrite($file,$chars)
FileClose($file)
EndIf
WEnd使用正则查找 使用正则查找
298311657 发表于 2010-1-7 17:01 http://www.autoitx.com/images/common/back.gif
又遇到问题:原始文件中:
"SDWB" "PvPGN Closed Realm" 192.168.1.88:6113 127.0.0.1:6113 192.168.1.1/24
结果出现2个6113 (127.0.0.1是我要修改的ip) 我改成
If $ip <> '192.168.1.88:6113' And $port = '6113 192.168.1.1/24' Then
却不工作了 :face (32):别逼我骂人!
$ip正则查的的IP,你加个端口上去干嘛?$port取的是查找的的IP后面跟的端口,你那是什么东西? 本帖最后由 a000000 于 2010-1-7 19:45 编辑
别逼我骂人!
$ip正则查的的IP,你加个端口上去干嘛?$port取的是查找的的IP后面跟的端口, ...
298311657 发表于 2010-1-7 19:22 http://www.autoitx.com/images/common/back.gif
哈哈,多谢大侠指点,我菜得很,还没弄明白正则,呵呵。多谢啦 再请教大侠一点,比如这样的:
192.168.1.88 127.0.0.1 192.168.1.1/24
127.0.0.1是需要修改的ip,大侠稍微指点一下,另外文件没有扩展名,名字是:d2gstrans
不知道这样的可以修改不? 请明白正则的大侠帮忙 多潜水学习吧,
多消化帮助吧,
多做小练习吧,
多。。。。。吧,
自己完成90%,10%问问别人,别整倒了。 多潜水学习吧,
多消化帮助吧,
多做小练习吧,
多。。。。。吧,
自己完成90%,10%问问别人,别整倒了 ...
顽固不化 发表于 2010-1-7 20:03 http://www.autoitx.com/images/common/back.gif
大侠名言,铭记在心,可 急用啊,大侠,稍微帮下忙啊 $file = FileOpen("d2gstrans", 0)
$chars = FileRead($file)
FileClose($file)
Dim $nOffset = 1,$num = 0
While 1
$ip = StringRegExp($chars,'((2\d|25|?\d\d?)\.){3}(2\d|25|?\d\d?)', 2,$nOffset)
If @error = 0 Then
$nOffset = @extended
$num += 1
Else
ExitLoop
EndIf
If $num = 2 Then;正则搜到的第2个IP
;~ MsgBox(0, '' , $ip)
$chars = StringReplace($chars, $ip , "97.121.124.125")
$file = FileOpen("d2gstrans", 2)
FileWrite($file,$chars)
FileClose($file)
ExitLoop
EndIf
WEnd还是正则 多谢298311657 以及顽固不化 大侠的帮助(幸亏他们2人的帮助),为以后有用的着的参考。暗黑服务器配置文件realm.list跟d2gstrans自动获取外网ip并自动修改文件内ip代码最终汇聚如下:
TCPStartup()
$newIP=TCPNameToIP("sdjt.vicp.net")
TCPShutdown ( )
$file = FileOpen("realm.list", 0)
$chars = FileRead($file)
FileClose($file)
$nOffset = 1
While 1
$ip = StringRegExp($chars,'((2\d|25|?\d\d?)\.){3}(2\d|25|?\d\d?)', 2,$nOffset)
If @error = 0 Then
$nOffset = @extended
Else
ExitLoop
EndIf
$port = StringMid($chars,$nOffset+1,4)
If $ip <> '192.168.1.88' And $port = '6113' Then
;~ MsgBox(0, $port , $ip)
$chars = StringReplace($chars, $ip , $newIP)
$file = FileOpen("realm.list", 2)
FileWrite($file,$chars)
FileClose($file)
EndIf
WEnd
以及
TCPStartup()
$newIP=TCPNameToIP("sdjt.vicp.net")
TCPShutdown ( )
$file = FileOpen("d2gstrans", 0)
$chars = FileRead($file)
FileClose($file)
Dim $nOffset = 1,$num = 0
While 1
$ip = StringRegExp($chars,'((2\d|25|?\d\d?)\.){3}(2\d|25|?\d\d?)', 2,$nOffset)
If @error = 0 Then
$nOffset = @extended
$num += 1
Else
ExitLoop
EndIf
If $num = 2 Then;正则搜到的第2个IP
;~ MsgBox(0, '' , $ip)
$chars = StringReplace($chars, $ip , $newIP)
$file = FileOpen("d2gstrans", 2)
FileWrite($file,$chars)
FileClose($file)
ExitLoop
EndIf
WEnd
页:
[1]
2