如何从字符串java中提取IP:PORT

gan*_*jan 3 java regex text-extraction

我有一个文本文件,并通过这样的文件循环:

for ( int i = 0; i < this.textLines.size(); i++ ) {
    String tempString = textLines.get( i );
Run Code Online (Sandbox Code Playgroud)

所以现在我tempString包含了类似的内容:

46.102.241.199:3128 0.2990 Transp. NN N 100% 2011-11-19 17:56:02

我想要的是返回IP:PORT部分,在这种情况下: 46.102.241.199:3128

我怎样才能做到这一点?

Mar*_*cus 7

这个正则表达式会让你获得一个带有可选端口的IP.如果总是有一个端口删除该行末尾的问号.

\d{1,3}(?:\.\d{1,3}){3}(?::\d{1,5})?
Run Code Online (Sandbox Code Playgroud)

请注意,这是对IPv4的简化验证,并且仅匹配它们是正确格式而不是有效格式.并记住添加一个额外的反斜杠来逃避java中的每个反斜杠.

这是java中的一个例子:

String text = "46.102.241.199:3128 0.2990 Transp. NN N 100% 2011-11-19 17:56:02";
String pattern = "\\d{1,3}(?:\\.\\d{1,3}){3}(?::\\d{1,5})?";

Pattern compiledPattern = Pattern.compile(pattern);
Matcher matcher = compiledPattern.matcher(text);
while (matcher.find()) {
    System.out.println(matcher.group());
}
Run Code Online (Sandbox Code Playgroud)

输出:

46.102.241.199:3128
Run Code Online (Sandbox Code Playgroud)