我正在解析包含IP地址和端口的文本文件。 IP地址和端口组合用一个或多个TAB或SPACE或两者分开。如何替换正则表达式中的字符串匹配
样品在文本文件中出现的是这样的:
121.78.195.165 8888
我需要匹配这一整个文本,并与TAB(S)或返回每场比赛SPACE(S)替换为 “:” 使其返回此:
121.78.195.165:8888
如果匹配是以SPACE或TAB嵌入的方式返回的,那么这会很容易,但是有时候没有SPACE或TAB会返回匹配。有时候只有一个空间。
例如。有时候是这样的:
121.78.195.1658888
和其他人是这样的:
121.78.195.165 8888
上面的变化取决于是否有空格,TAB或两者的组合以及源文本中的数量。
我使用TPerlRegex在德尔福这样的:
regex := TPerlRegEx.Create;
try
regex.Options := [preMultiLine];
regex.regex :=
'\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)[\s\t]+\d{2,5}\b';
regex.Study;
regex.Subject := StringOf(buf);
if regex.Match then
begin
regex.Replacement := ':';
s := regex.MatchedText; // <---- Need this to be '121.78.195.165:8888'
ShowMessage(s);
end;
finally
regex.Free;
end;
所以我的问题是有关如何使用正则表达式引擎做更换后出现的TAB(S)或用空间(S)的IP地址和端口之前。
TIA。
你怎么知道如果121.78.195.1658888是121.78.195.16:58888或121.78.195.165:8888? –