haijie1223 发表于 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

afan 发表于 2016-4-12 17:40:23

回复 16# haijie1223


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

关键在于:替换表达式里面含有“.”这个元字符…

haijie1223 发表于 2016-4-12 17:44:18

回复 17# afan


    这个问题我也一直不是很明白,正则替换表达式中的".",是正则中的匹配所有字符的意义,还是就表示"."本身。

afan 发表于 2016-4-12 17:46:21

回复afan


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


    “.”既然是元字符,当然不是“.”其本身字符

haijie1223 发表于 2016-4-12 17:48:24

回复 19# afan


    那要用\.进行转义喽

afan 发表于 2016-4-12 17:52:23

回复afan


    那要用\.进行转义喽
haijie1223 发表于 2016-4-12 17:48 http://www.autoitx.com/images/common/back.gif


    是的楼主在5#想到了这一点但未停留… {:1_492:}

zghwelcome 发表于 2016-4-12 17:56:18

两位一问一答,楼主始终不现身说法啊{:face (197):}

haijie1223 发表于 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 = [["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] & "(\D)", $a_IP_Add[$i] & " [" & $a_IP_Add[$i] & "]\1")
Next
MsgBox(0, "替换", $Text)

haijie1223 发表于 2016-4-12 18:06:52

回复 21# afan


    多谢A版指点,这回记住了。

afan 发表于 2016-4-12 18:11:42

回复afan
haijie1223 发表于 2016-4-12 17:59 http://www.autoitx.com/images/common/back.gif


    你这个有些麻烦,每个都要\转义一下; 而且,如果诸如以“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"

afan 发表于 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 = [["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)

haijie1223 发表于 2016-4-12 18:23:31

回复 26# afan


    感谢A版,又赚到了。。。{:face (427):}

afan 发表于 2016-4-12 18:24:43

回复afan


    感谢A版,又赚到了。。。
haijie1223 发表于 2016-4-12 18:23 http://www.autoitx.com/images/common/back.gif


    感谢发哥偶也赚了… {:1_587:}

afan 发表于 2016-4-12 18:26:07

两位一问一答,楼主始终不现身说法啊
zghwelcome 发表于 2016-4-12 17:56 http://www.autoitx.com/images/common/back.gif


    因为楼主自我解决就完事了   放心如果发现问题会回访的{:face (303):}

haijie1223 发表于 2016-4-12 18:46:37

回复 26# afan


    A版,请教一下,\Q与\E中间的部分,可以是"普通字符串",也可以是"纯元字符",也可以是"元字符和普通字符的混合字符串",是不是这样?
页: 1 [2] 3
查看完整版本: 请教文本替换的问题(可能需要正则?) 已解决