我擦~看了好半天才看明白题意,是不是这样?
直接说 原字符 是什么,目标字符是什么。多么简单的事,非要复杂化。
#include <Array.au3>
Global $t_RegExp = "\b(?:[0-9]|[0-9]{2}|[0-1][0-9]{2}|2[0-4][0-9]|25[0-5])\.(?:[0-9]|[0-9]{2}|[0-1][0-9]{2}|2[0-4][0-9]|25[0-5])\.(?:[0-9]|[0-9]{2}|[0-1][0-9]{2}|2[0-4][0-9]|25[0-5])\.(?:[0-9]|[0-9]{2}|[0-1][0-9]{2}|2[0-4][0-9]|25[0-5])\b"
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"
Local $a_IP = StringRegExp($Text, $t_RegExp, 3)
_ArraySort($a_IP) ;排序
$a_IP = _ArrayUnique($a_IP, 0, 0, 0, 0) ;去除重复值
; 假如由 $a_IP 得到了 下面的 $a_IP_Add
Local $a_IP_Add[3][2] = [["111.111.111.1", "地址11111111111"], _
["111.111.111.11", "地址22222222222222222222"], _
["111.111.111.111", "地址33333"]]
_ArrayDisplay($a_IP_Add)
MsgBox(0, "原始文本", $Text)
; 下面的替换结果是不正确的
$Text = StringRegExpReplace($Text, $a_IP_Add[0][0] & "(\D)", $a_IP_Add[0][0] & " [" & $a_IP_Add[0][1] & "]\1")
MsgBox(0, "替换111.111.111.1", $Text)
$Text = StringRegExpReplace($Text, $a_IP_Add[1][0] & "(\D)", $a_IP_Add[1][0] & " [" & $a_IP_Add[1][1] & "]\1")
MsgBox(0, "替换111.111.111.11", $Text)
$Text = StringRegExpReplace($Text, $a_IP_Add[2][0] & "(\D)", $a_IP_Add[2][0] & " [" & $a_IP_Add[2][1] & "]\1")
MsgBox(0, "替换111.111.111.111", $Text)
|