找回密码
 加入
搜索
查看: 3657|回复: 17

关于字符替换问题

  [复制链接]
发表于 2010-1-7 15:52:58 | 显示全部楼层 |阅读模式
本帖最后由 a000000 于 2010-1-7 20:26 编辑

0.txt内容如下:


11111111
22222222
33333333
44444444
55555555
66666666
77777777
88888888
99999999

dsafsdafsda     127.0.0.1  123.133.33.98:8563
00000000
000000000000

其中ip:123.133.33.98  为一个变量数值,要求每次都替换这个ip别的都不动,请高手指点,想了很多方法都无法完美的只替换那一个ip
发表于 2010-1-7 15:55:14 | 显示全部楼层
8563动不动?
 楼主| 发表于 2010-1-7 15:55:44 | 显示全部楼层
本帖最后由 a000000 于 2010-1-7 15:59 编辑

8563不动,别的都不动,8563是个端口,只是那个ip是动态的,实际文件中下面还有好多行
发表于 2010-1-7 16:37:03 | 显示全部楼层
回复 1# a000000


    123.133.33.98后面应该是:而不是:吧
发表于 2010-1-7 16:48:19 | 显示全部楼层
$Str = _
'11111111' & @CRLF & _
'22222222' & @CRLF & _
'33333333' & @CRLF & _
'44444444' & @CRLF & _
'55555555' & @CRLF & _
'66666666' & @CRLF & _
'77777777' & @CRLF & _
'88888888' & @CRLF & _
'99999999' & @CRLF & _
'' & @CRLF & _
'dsafsdafsda     127.0.0.1  123.133.33.98:8563' & @CRLF & _
'00000000' & @CRLF & _
'000000000000'

Msgbox(0, '原始', $str)
$ip = '255.255.255.255'
Msgbox(0, '修改', StringRegExpReplace($str, '[^\s]+(?=\:\d+)', $ip))
发表于 2010-1-7 17:01:20 | 显示全部楼层
$file = FileOpen("1.txt", 0)
$chars = FileRead($file)
FileClose($file)
$nOffset = 1
While 1
        $ip = StringRegExp($chars,'((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)', 2,$nOffset)        
        If @error = 0 Then
                $nOffset = @extended
        Else
                ExitLoop
        EndIf
        $port = StringMid($chars,$nOffset+1,4)
        If $ip[0] <> '127.0.0.1' And $port = '8563' Then
;~                 MsgBox(0, $port , $ip[0])
                $chars = StringReplace($chars, $ip[0] , "97.121.124.125")
                $file = FileOpen("1.txt", 2)
                FileWrite($file,$chars)
                FileClose($file)
        EndIf
WEnd
使用正则查找
 楼主| 发表于 2010-1-7 19:18:29 | 显示全部楼层
使用正则查找
298311657 发表于 2010-1-7 17:01



    又遇到问题:原始文件中:
"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[0] <> '192.168.1.88:6113' And $port = '6113 192.168.1.1/24' Then

却不工作了
发表于 2010-1-7 19:22:12 | 显示全部楼层
别逼我骂人!
$ip[0]正则查的的IP,你加个端口上去干嘛?$port取的是查找的的IP后面跟的端口,你那是什么东西?
 楼主| 发表于 2010-1-7 19:27:01 | 显示全部楼层
本帖最后由 a000000 于 2010-1-7 19:45 编辑
别逼我骂人!
$ip[0]正则查的的IP,你加个端口上去干嘛?$port取的是查找的的IP后面跟的端口, ...
298311657 发表于 2010-1-7 19:22


哈哈,多谢大侠指点,我菜得很,还没弄明白正则,呵呵。多谢啦
 楼主| 发表于 2010-1-7 19:32:54 | 显示全部楼层
再请教大侠一点,比如这样的:
192.168.1.88                        127.0.0.1                192.168.1.1/24

127.0.0.1  是需要修改的ip,大侠稍微指点一下,另外文件没有扩展名,名字是:d2gstrans

不知道这样的可以修改不?
 楼主| 发表于 2010-1-7 19:53:41 | 显示全部楼层
请明白正则的大侠帮忙
发表于 2010-1-7 20:03:09 | 显示全部楼层
多潜水学习吧,
多消化帮助吧,
多做小练习吧,
多。。。。。吧,
自己完成90%,10%问问别人,别整倒了。

评分

参与人数 1金钱 +10 收起 理由
afan + 10 :)

查看全部评分

 楼主| 发表于 2010-1-7 20:04:51 | 显示全部楼层
多潜水学习吧,
多消化帮助吧,
多做小练习吧,
多。。。。。吧,
自己完成90%,10%问问别人,别整倒了 ...
顽固不化 发表于 2010-1-7 20:03



   大侠名言,铭记在心,可 急用啊,大侠,稍微帮下忙啊
发表于 2010-1-7 20:11:15 | 显示全部楼层
$file = FileOpen("d2gstrans", 0)
$chars = FileRead($file)
FileClose($file)
Dim $nOffset = 1,$num = 0

While 1
        $ip = StringRegExp($chars,'((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)', 2,$nOffset)        
        If @error = 0 Then
                $nOffset = @extended
                                $num += 1
        Else
                ExitLoop
        EndIf
        If $num = 2 Then;正则搜到的第2个IP
;~                 MsgBox(0, '' , $ip[0])
                $chars = StringReplace($chars, $ip[0] , "97.121.124.125")
                $file = FileOpen("d2gstrans", 2)
                FileWrite($file,$chars)
                FileClose($file)
                                ExitLoop
        EndIf
WEnd
还是正则
 楼主| 发表于 2010-1-7 20:23:52 | 显示全部楼层
多谢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[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)', 2,$nOffset)        

        If @error = 0 Then

                $nOffset = @extended

        Else

                ExitLoop

        EndIf

        $port = StringMid($chars,$nOffset+1,4)

        If $ip[0] <> '192.168.1.88' And $port = '6113' Then

;~                 MsgBox(0, $port , $ip[0])

                $chars = StringReplace($chars, $ip[0] , $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[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)', 2,$nOffset)        
        If @error = 0 Then
                $nOffset = @extended
                                $num += 1
        Else
                ExitLoop
        EndIf
        If $num = 2 Then;正则搜到的第2个IP
;~                 MsgBox(0, '' , $ip[0])
                $chars = StringReplace($chars, $ip[0] , $newIP)
                $file = FileOpen("d2gstrans", 2)
                FileWrite($file,$chars)
                FileClose($file)
                                ExitLoop
        EndIf
WEnd
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-7-1 10:58 , Processed in 0.093449 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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