-1

这是对我的另一个问题的跟进,简单的 Java Regex read between two

现在我的代码看起来像这样。我正在读取文件的内容,扫描 src 和 -t1 之间的任何内容。运行此代码将返回 1 个正确链接,但源文件包含 10 个,我无法弄清楚循环。我认为另一种方法可能是写入磁盘上的第二个文件并从原始源中删除第一个链接,但我也无法编写代码:

File workfile = new File("page.txt");
BufferedReader br = new BufferedReader(new FileReader(workfile));
String line;

while ((line = br.readLine()) != null) {
    //System.out.println(line);


    String url = line.split("<img src=")[1].split("-t1")[0];    
    System.out.println(url);

  }
  br.close();
4

1 回答 1

1

我想你想要类似的东西

import java.util.regex.*;

Pattern urlPattern = Pattern.compile("<img src=(.*?)-t1");

while ((line = br.readLine()) != null) {
        Matcher m = urlPattern.matcher (line);
        while (m.find()) {
            System.out.println(m.group(1));
        }
}

正则表达式查找以 with 开头<img src=和结尾的字符串-t1(并查找可能的最短子字符串,以便可以在该行中找到多个子字符串)。括号中的部分是一个“捕获组”,用于捕获匹配的文本;这称为第 1 组。然后,对于每一行,我们在 find() 上循环以查找每行中的所有匹配项。每次我们找到一个,我们打印第 1 组中的内容。

于 2013-07-17T15:50:50.477 回答