找回密码
 加入
搜索
楼主: hnfeng

[AU3基础] 请教文本替换的问题(可能需要正则?) 已解决

 火.. [复制链接]
发表于 2016-4-12 18:50:54 | 显示全部楼层
回复  afan


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



    \Q与\E之间的任何字符都以原始字符匹配
发表于 2016-4-12 19:12:43 | 显示全部楼层
回复 31# afan


    明白~感谢!
 楼主| 发表于 2016-4-13 14:42:15 | 显示全部楼层
本帖最后由 hnfeng 于 2016-4-13 15:08 编辑

非常感谢两位版主的帮助

1、我写的问题确实有点乱,惭愧了
2、16楼确实是真正的意思
3、我一楼的这个正则表达式确实有问题,会吃掉IP后面的回车符,正如 17楼所说
4、26楼是完美的答案
5、又学到不少东东,再次感谢两位版本 @afan, @haijie1223
6、因有急事去电脑市场找设备,没上网看贴,未及时回帖,抱歉
 楼主| 发表于 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[3][2] = [["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][0] & '\E(?=\D|$)', $a_IP_Add[$i][0] & ' [' & $a_IP_Add[$i][1] & ']') 
Next 
MsgBox(0, "替换", $Text)
发表于 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[3][2] = [["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][0] & '\E(?=\D|$)', $a_IP_Add[$i][0] & ' [' & $a_IP_Add[$i][1] & ']')
Next
MsgBox(0, "替换", $Text)
 楼主| 发表于 2016-4-14 13:55:24 | 显示全部楼层
回复 35# afan

多谢多谢,完美了

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

太感谢了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-22 16:48 , Processed in 0.072854 second(s), 13 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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