如何处理文本文件中两个单词之间的大间隙,这些单词未被我的程序读取为空格?

时间:2016-09-10 15:25:39

标签: java file

我正在尝试从包含搜索信息的文本文件中读取:IP地址,搜索时间,搜索字词以及点击的链接。我试图逐行遍历文件,并在每一个上提取IP地址,我这样做是通过将每个字符添加到一个字符串,直到我到达该行的第一个空格。但是,正如您在屏幕截图中看到的那样,IP地址和时间之间的差距远大于海平面和压力之间的差距。这个差距没有被记录为一个空间,程序在整个线路中找到的第一个空间是海平面和压力之间的空间。因此,我无法仅提取IP。有没有办法解决这个问题或修复它?

screenshot of data in text file

3 个答案:

答案 0 :(得分:0)

根据您的语言,'/\s+/'应该可以解决问题。

请参阅Explode string by one or more spaces or tabs

答案 1 :(得分:0)

  1. 您可以使用正则表达式提取IP地址,将每一行提取为字符串,然后您可以使用类似的内容。
  2. string line = extract_line();

    String ip_pattern =“^(?:[0-9] {1,3}。){3} [0-9] {1,3} $”;

    模式r = Pattern.compile(ip_patter);

    Matcher m = r.matcher(line);

    m.group(0);

    如果找到任何地址,则有ip地址,否则它将为null。

    如果该行中存在多个IP地址,您可以将它们编入索引m.group(n)。

    借助以下链接获得:

    1. http://www.tutorialspoint.com/java/java_regular_expressions.htm

    2. https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html

答案 2 :(得分:0)

大空间是标签。搜索“\ t”