0

我想从文件中读取每一行并只编辑显示来自特定服务器的 url 的行......我的代码就像......

   Scanner ReadIsbn = new Scanner (new FileReader ("C:/Users/...."));        

    Pattern pat = Pattern.compile("http:////www.librarything.com//isbn//");

    while ( ReadIsbn.hasNextLine()){

        String line = ReadIsbn.nextLine();
        Matcher m = pat.matcher(line);
        if (m.matches() == true) {
            EDIT line....

        }

    }

}

而且它不起作用......事实上 m.matches() 总是错误的......在我作为输入提供的文件中,有如下行:

1)   http://www.librarything.com/isbn/0-9616696-7-5.html
2)   http://www.librarything.com/isbn/0-86078-322-7.html
Cultural tourism : how the arts can help market tourism products, how 
blablabla

(我只想编辑示例的前两行)

4

2 回答 2

2

您无需在模式中转义正斜杠。这应该做

Pattern pat = Pattern.compile("http://www.librarything.com/isbn/");

另一个问题是该matches方法尝试将模式与整个输入文本进行匹配。采用

 if (m.find()){
        EDIT line....
 }

如果您只想在这里检查前缀,那么您也可以使用String#startsWith方法

于 2011-11-08T09:38:20.797 回答
1

它不起作用,因为方法matches()匹配行。您应该添加.*到模式的末尾

Pattern pat = Pattern.compile("http://www.librarything.com//isbn/.*");

或改用“find()”方法。

此外,您不应编写重复的正斜杠。此字符“/”是正斜杠,而不是反斜杠。

于 2011-11-08T09:40:41.483 回答