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
我怎样才能做到这一点?
这个正则表达式会让你获得一个带有可选端口的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)