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

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

 火.. [复制链接]
发表于 2016-4-12 17:29:59 | 显示全部楼层
回复 15# afan


    我猜楼主的意思是这样的:
原字符串:
Local $Text = "asasaf 111.111.111.1aaa" & @CRLF & _
                "asasaf 111.111.111.1" & @CRLF & _
                "asasaf 111.111.111.11" & @CRLF & _
                "asasaf 111.111.111.11aaa" & @CRLF & _
                "asasaf 111.111.111.111" & @CRLF & _
                "asasaf 111.111.111.111aaaa"
目标字符串:
asasaf 111.111.111.1 [地址11111111111]aaa
asasaf 111.111.111.1 [地址11111111111]
asasaf 111.111.111.11 [地址22222222222222222222]
asasaf 111.111.111.11 [地址22222222222222222222]aaa
asasaf 111.111.111.111 [地址33333]
asasaf 111.111.111.111 [地址33333]aaaa

评分

参与人数 1金钱 +15 收起 理由
hnfeng + 15 谢谢

查看全部评分

发表于 2016-4-12 17:40:23 | 显示全部楼层
回复 16# haijie1223


    被你这么一说  问题瞬间明朗了
不是源字符串丢\D的问题,因为\D可以拿@CRLF的@CR抵掉,因此不会出错,楼主没察觉而已…

关键在于:  替换表达式里面含有“.”这个元字符…
发表于 2016-4-12 17:44:18 | 显示全部楼层
回复 17# afan


    这个问题我也一直不是很明白,正则替换表达式中的".",是正则中的匹配所有字符的意义,还是就表示"."本身。
发表于 2016-4-12 17:46:21 | 显示全部楼层
回复  afan


    这个问题我也一直不是很明白,正则替换表达式中的".",是正则中的匹配所有字符的意义 ...
haijie1223 发表于 2016-4-12 17:44



    “.”既然是元字符,当然不是“.”其本身字符
发表于 2016-4-12 17:48:24 | 显示全部楼层
回复 19# afan


    那要用\.进行转义喽
发表于 2016-4-12 17:52:23 | 显示全部楼层
回复  afan


    那要用\.进行转义喽
haijie1223 发表于 2016-4-12 17:48



    是的  楼主在5#想到了这一点  但未停留…
发表于 2016-4-12 17:56:18 | 显示全部楼层
两位一问一答,楼主始终不现身说法啊
发表于 2016-4-12 17:59:05 | 显示全部楼层
回复 21# afan


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

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, $a_IP_Add[$i][0] & "(\D)", $a_IP_Add[$i][0] & " [" & $a_IP_Add[$i][1] & "]\1")
Next
MsgBox(0, "替换", $Text)
发表于 2016-4-12 18:06:52 | 显示全部楼层
回复 21# afan


    多谢A版指点,这回记住了。
发表于 2016-4-12 18:11:42 | 显示全部楼层
回复  afan
haijie1223 发表于 2016-4-12 17:59



    你这个有些麻烦,每个都要\转义一下; 而且,如果诸如以“111.111.111.111”作为整段结尾则不会替换最后的。
Global $Text = "asasaf 111.111.111.1aaa" & @CRLF & _
                "asasaf 111.111.111.1" & @CRLF & _
                "asasaf 111.111.111.11" & @CRLF & _
                "asasaf 111.111.111.11aaa" & @CRLF & _
                "asasaf 111.111.111.111" & @CRLF & _
                "asasaf 111.111.111.111aaaa" & @CRLF & _
                "asasaf 111.111.111.111"
发表于 2016-4-12 18:13:27 | 显示全部楼层
回复 24# haijie1223


    试试这样
#include <Array.au3>
Global $Text = "asasaf 111.111.111.1aaa" & @CRLF & _
                "asasaf 111.111.111.1" & @CRLF & _
                "asasaf 111.111.111.11" & @CRLF & _
                "asasaf 111.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)

评分

参与人数 3威望 +5 金钱 +120 贡献 +5 收起 理由
hnfeng + 30 厉害、佩服
zghwelcome + 30
haijie1223 + 5 + 60 + 5 感谢!

查看全部评分

发表于 2016-4-12 18:23:31 | 显示全部楼层
回复 26# afan


    感谢A版,又赚到了。。。
发表于 2016-4-12 18:24:43 | 显示全部楼层
回复  afan


    感谢A版,又赚到了。。。
haijie1223 发表于 2016-4-12 18:23



    感谢发哥  偶也赚了…
发表于 2016-4-12 18:26:07 | 显示全部楼层
两位一问一答,楼主始终不现身说法啊
zghwelcome 发表于 2016-4-12 17:56



    因为楼主自我解决就完事了   放心  如果发现问题会回访的  
发表于 2016-4-12 18:46:37 | 显示全部楼层
回复 26# afan


    A版,请教一下,\Q与\E中间的部分,可以是"普通字符串",也可以是"纯元字符",也可以是"元字符和普通字符的混合字符串",是不是这样?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-7 12:13 , Processed in 0.077469 second(s), 18 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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