使用java从文本文件中提取特定URL

时间:2012-08-11 19:36:06

标签: java regex text-parsing web-crawler

我有一个文本文档,其中有一堆/courses/......./.../..形式的网址 从这些网址中,我只想提取/courses/.../lecture-notes形式的网址。表示以/courses开头并以/lecture-notes结尾的网址。 有没有人知道用正则表达式或仅通过字符串匹配来做这个的好方法?

3 个答案:

答案 0 :(得分:5)

这是另一种选择:

Scanner s = new Scanner(new FileReader("filename.txt"));

String str;
while (null != (str = s.findWithinHorizon("/courses/\\S*/lecture-notes", 0)))
    System.out.println(str);

给定filename.txt内容

Here /courses/lorem/lecture-notes and
here /courses/ipsum/dolor/lecture-notes perhaps.

以上代码段打印

/courses/lorem/lecture-notes
/courses/ipsum/dolor/lecture-notes

答案 1 :(得分:1)

假设每行有1个URL,可以使用:

    BufferedReader br = new BufferedReader(new FileReader("urls.txt"));
    String urlLine;
    while ((urlLine = br.readLine()) != null) {
        if (urlLine.matches("/courses/.*/lecture-notes")) {
            // use url
        }
    }

答案 2 :(得分:1)

以下将返回中间部分(即:排除/courses//lectures-notes/

Pattern p = Pattern.compile("/courses/(.*)/lectures-notes");
Matcher m = p.matcher(yourStrnig);

if(m.find()).
  return m.group(1) // The "1" here means it'll return the first part of the regex between parethesis.