作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在解析一个包含IP地址和端口的文本文件。 IP地址和端口组合用一个或多个TAB或SPACE或两者分开。
文本文件中出现的示例如下:
121.78.195.165 8888
我需要匹配整个文本,并用TAB或SPACE返回的每个匹配项都用“:”替换,以便返回以下内容:
121.78.195.165:8888
如果返回的比赛中嵌入了SPACE或TAB,这将很容易,但是有时返回的比赛中却没有SPACE或TAB。有时只有一个空间。
例如。有时像这样:
121.78.195.1658888
和其他类似的东西:
121.78.195.165 8888
上面的变化取决于是否有SPACE,TAB或两者的组合以及源文本中有多少。
我在Delphi中使用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;
最佳答案
您可以使用类似以下内容(针对XE2 TPerlRegEx兼容性进行编辑):
var
Regex: TPerlRegEx;
ResultString: string;
begin
Regex := TPerlRegEx.Create;
try
Regex.RegEx := '\b((?:[0-9]{1,3}\.){3}[0-9]{1,3})\s(.*)';
Regex.Options := [];
Regex.State := [preNotEmpty];
Regex.Subject := SubjectString;
Regex.Replacement := '\1:\2';
Regex.ReplaceAll;
ResultString := Regex.Subject;
finally
Regex.Free;
end;
end;
85.39.138.58 151
187.39.55.23 399
80.14.5.209 1424
80.14.6.217 1424
1.1.135.73 1464
80.14.5.209 135
80.14.7.2 1392
187.39.55.100 399
67.78.18.222 1472
85.39.138.58:151
187.39.55.23:399
80.14.5.209:1424
80.14.6.217:1424
1.1.135.73:1464
80.14.5.209:135
80.14.7.2:1392
187.39.55.100:399
67.78.18.222:1472
关于regex - 如何在正则表达式匹配项中替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22676358/
我是一名优秀的程序员,十分优秀!