gpt4 book ai didi

java - 使用Regex Java从文件中获取所有IP地址

转载 作者:行者123 更新时间:2023-12-02 07:16:38 26 4
gpt4 key购买 nike

我正在尝试读取文本文件,搜索所有有效的 IP 地址并打印它们。使用 Scanner 类读取文件,并将文件的全部内容存储在字符串中;然后我使用Java的util.regex Pattern和Matcher来搜索所有有效的IP地址并一一打印它们。这是我到目前为止编写的代码:

    String inp ="";
File file = new File("C:\\input.txt");
try {
Scanner scan = new Scanner(file);
while(scan.hasNextLine()) {
inp += scan.nextLine() + " ";
}
} catch (FileNotFoundException f) {
f.printStackTrace();
}

System.out.println("File inp string is "+inp);
Pattern pattern =
Pattern.compile("^(?:(?: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]?)");
Matcher match = pattern.matcher(inp);
while(match.find()) {
System.out.println("IP found: "+match.group());
}

文件内容如下:

127.0.0.1 1:00 AM
User entered host
255.1.2.2 11:00 PM
127.0.0.1 1:00 AM

我得到的输出是:

File inp string is 127.0.0.1 1:00 AM User entered host 255.1.2.2 11:00 PM 127.0.0.1 1:00 AM 
IP found: 127.0.0.1

这是我从输入字符串中获得的唯一 IP。我不明白为什么模式匹配器会忽略其他 3 个 IP。有人可以帮忙吗?

最佳答案

从正则表达式的开头删除 ^,或在从文件中读取的每一行后添加新行标记 \n

也不要使用 += 运算符连接文件的行,因为每次这样做都会创建新的字符串。而是使用 StringBuilder#append(yourLine) .

关于java - 使用Regex Java从文件中获取所有IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14866578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com