我的程序将读取提取的日志文件的一部分,如下所示<
2017-05-30 14:33:43,876 INFO [SSHD-TRANSFER-1] com.tumbleweed.st.server.sshd.AuthenticationProviderImpl - SSH: Failed login attempt on [172.16.8.1]. Username: "rene1".
但这不是我进一步处理所需的全部内容。我只对172.16.8.1
感兴趣,我将把它写入文本文件。因为我只需要那些不同的IP地址。我可以知道我需要设置什么类型的模式才能使其工作。我设置了模式,但看起来效果不佳
这是我的正则表达模式Pattern pat1 = Pattern.compile("(?<=[)[\\d.]+.");
答案 0 :(得分:1)
您可以使用下一个表达式:\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b
来查找IP地址。
答案 1 :(得分:0)
您可以使用此正则表达式匹配您的IP地址:
private static final String IPADDRESS_PATTERN
= "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."
+ "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."
+ "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."
+ "([01]?\\d\\d?|2[0-4]\\d|25[0-5])";
public static void main(String[] args) {
String str = "2017-05-30 14:33:43,876 INFO [SSHD-TRANSFER-1] com.tumbleweed.st.server.sshd.AuthenticationProviderImpl - SSH: Failed login attempt on [172.16.8.1]. Username: \"rene1\".";
Pattern p = Pattern.compile(IPADDRESS_PATTERN);
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group());
}
}
<强>输出强>
172.16.8.1
您可以在这里查看正则表达式How to validate IP address with regular expression