afan 发表于 2016-4-12 18:50:54

回复afan


    A版,请教一下,\Q与\E中间的部分,可以是"普通字符串",也可以是"纯元字符",也可以是 ...
haijie1223 发表于 2016-4-12 18:46 http://www.autoitx.com/images/common/back.gif


    \Q与\E之间的任何字符都以原始字符匹配

haijie1223 发表于 2016-4-12 19:12:43

回复 31# afan


    明白~感谢!

hnfeng 发表于 2016-4-13 14:42:15

本帖最后由 hnfeng 于 2016-4-13 15:08 编辑

非常感谢两位版主的帮助

1、我写的问题确实有点乱,惭愧了
2、16楼确实是真正的意思
3、我一楼的这个正则表达式确实有问题,会吃掉IP后面的回车符,正如 17楼所说
4、26楼是完美的答案
5、又学到不少东东,再次感谢两位版本 @afan, @haijie1223
6、因有急事去电脑市场找设备,没上网看贴,未及时回帖,抱歉

hnfeng 发表于 2016-4-14 13:07:30

本帖最后由 hnfeng 于 2016-4-14 13:09 编辑

为了兼顾IP所在文本的各种情况,麻烦 @afan 再改改正则表达式。
目前的代码,当 IP 前后紧跟英文字符时,替换失败(结果中有部分IP未被替换)

#include <Array.au3>
Global $Text = "asasaf111.111.111.1aaa" & @CRLF & _
               "asasaf111.111.111.1" & @CRLF & _
               "111.111.111.11aaaa" & @CRLF & _
               "asasaf111.111.111.11aaa" & @CRLF & _
               "asasaf 111.111.111.111" & @CRLF & _
               "asasaf 111.111.111.111aaaa" & @CRLF & _
               "asasaf 111.111.111.111"

Global $a_IP_Add = [["111.111.111.1", "地址11111111111"], _
                           ["111.111.111.11", "地址22222222222222222222"], _
                           ["111.111.111.111", "地址33333"]]

For $i = 0 To UBound($a_IP_Add) - 1
         $Text = StringRegExpReplace($Text, '\b\Q' & $a_IP_Add[$i] & '\E(?=\D|$)', $a_IP_Add[$i] & ' [' & $a_IP_Add[$i] & ']')
Next
MsgBox(0, "替换", $Text)

afan 发表于 2016-4-14 13:11:09

回复 34# hnfeng #include <Array.au3>

Global $Text = "asasaf111.111.111.1aaa" & @CRLF & _
                "asasaf111.111.111.1" & @CRLF & _
                "111.111.111.11aaaa" & @CRLF & _
                "asasaf111.111.111.11aaa" & @CRLF & _
                "asasaf 111.111.111.111" & @CRLF & _
                "asasaf 111.111.111.111aaaa" & @CRLF & _
                "asasaf 111.111.111.111"

Global $a_IP_Add = [["111.111.111.1", "地址11111111111"], _
                ["111.111.111.11", "地址22222222222222222222"], _
                ["111.111.111.111", "地址33333"]]

For $i = 0 To UBound($a_IP_Add) - 1
        $Text = StringRegExpReplace($Text, '(?<=\D|^)\Q' & $a_IP_Add[$i] & '\E(?=\D|$)', $a_IP_Add[$i] & ' [' & $a_IP_Add[$i] & ']')
Next
MsgBox(0, "替换", $Text)

hnfeng 发表于 2016-4-14 13:55:24

回复 35# afan

多谢多谢,完美了

我也把获取IP的正则表达式前面 改为 (?<=\D|^) 后面改为 (?=\D|$)

太感谢了
页: 1 2 [3]
查看完整版本: 请教文本替换的问题(可能需要正则?) 已解决