找回密码
 加入
搜索
查看: 7674|回复: 5

[效率算法] 正则表达式替换的问题【已解决】

  [复制链接]
发表于 2014-8-9 16:25:35 | 显示全部楼层 |阅读模式
本帖最后由 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)
发表于 2014-8-9 21:17:09 | 显示全部楼层
$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)
这样试下,占用与非占用是一个矛盾,暂时只想到这样处理的方法
发表于 2014-8-9 21:27:56 | 显示全部楼层
正则再组合可以不?
[\d+\.]+\.|/?(\d+)
替换一直不会用~悲催
 楼主| 发表于 2014-8-11 09:43:19 | 显示全部楼层
回复 2# kevinch


    感谢~  虽然不是替换,不够能解决问题了~
 楼主| 发表于 2014-8-11 09:43:51 | 显示全部楼层
回复 3# haijie1223


    感谢大神来关注帖子.....  我也是不会替换~~
发表于 2014-8-11 12:45:13 | 显示全部楼层
回复 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[0]
        $ip1 = StringRegExp($num[$i], "\((.*?)\)", 3)
        If Not @error Then
                $str = ""
                $ip2 = StringRegExp($ip1[0], ".*?:[\d+\.]+\.|/?(\d+)", 3)
                For $k = 1 To UBound($ip2) - 1
                        $str &= $ip2[0] & $ip2[$k]
                Next
        EndIf
        $num[$i] = StringRegExpReplace($num[$i], "\(.*?\)", "(" & $str & ")")
        $nstr &= $num[$i] & @CR
Next

ConsoleWrite($nstr & @CRLF)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 10:29 , Processed in 0.101165 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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