2011-12-31 11 views
0

私のコンピュータに(ANSI)テキストファイル(filters.txt)があります。各行には正規表現があります。Readlineと正規表現の照合に問題があります

私のメインでは、私はRSSフィードをループします。各アイテムはfilters.txtで一致するかどうかを確認する別のメソッドに渡されます。

問題は何も一致していないようです。

  • 私はメソッドに渡している文字列が正しいです(テスト)
  • 私の正規表現はfilters.txtから入力
  • (テスト)正しいですが、テキストファイルと同じように、「そうです」
  • おそらく改行などでパターンが一致していますか?これを行うには、テキストファイルを読むために他のツールを使用する必要がありますか?

は、ここに私のメソッドのコードです:

public static boolean filtermatch(String rsstitle) { 
    boolean result = false; 

     try { 
      BufferedReader br = new BufferedReader(new FileReader("filters.txt")); 
      String strLine; 

      while ((strLine = br.readLine())!= null && result == false) { 
       if(Pattern.matches("(?i)" + strLine, rsstitle)) { 
        result = true; 
       } 
      } 
      br.close(); 
     } catch (Exception e) { 
      System.err.println("Error: " + e.getMessage()); 
     } 

    return result; 
} 

EDIT: は、私だけが今にしたフィルタ:

\\[HorribleSubs\\].*Chihayafuru.* 

は、「[HorribleSubs]ちはやふる一致する必要があります - 12 [720Pを] .mkv "それはまだありません。それは私がプログラムで正規表現を定義しても、それにマッチします。

+0

例を参考にしてください。 –

+0

追加されました。< – lelouch

+0

'新しいFileReader(" filters.txt "、" Cp1252 ")は、ファイルがWindowsコードページ1252、Latin1のWindowsの変形であることを明示的に述べています。これで、オペレーティングシステムのデフォルトが使用されます。 –

答えて

2

ファイルに二重バックスラッシュを入れないでください:Javaはそれらを "\\\\"で変換します。それは "\\"のような単一のバックスラッシュを読み取ります。

+0

Aaaaaaaaannnnnnnnnnddddddddは動作しています! ダースありがとう、決してそれを考え出したことはありません:) – lelouch

+0

@lelouchええと、文字列で読むことはそれらを構築することと同じではありません - エスケープはソース自体にのみ関連しています。 –