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()は常にfalseです..入力として与えるファイルには、次のような行があります:

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

(例の最初の 2 行だけを編集したい)

4

2 に答える 2

2

パターン内でスラッシュをエスケープする必要はありません。これはすべきです

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

もう 1 つの問題は、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 に答える