austere 发表于 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)

kevinch 发表于 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)这样试下,占用与非占用是一个矛盾,暂时只想到这样处理的方法

haijie1223 发表于 2014-8-9 21:27:56

正则再组合可以不?[\d+\.]+\.|/?(\d+)替换一直不会用~悲催

austere 发表于 2014-8-11 09:43:19

回复 2# kevinch


    感谢~虽然不是替换,不够能解决问题了~

austere 发表于 2014-8-11 09:43:51

回复 3# haijie1223


    感谢大神来关注帖子.....我也是不会替换~~

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
        $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]
查看完整版本: 正则表达式替换的问题【已解决】