2017-10-25 15 views
-3

現在のすべての行を印刷できるログファイルを読むには、STARTコードでヘルプが必要です。特定の単語で終わるログの特定の行を読むのに助けが必要です

私のファイルが含まれています。それは私がコードの下にしようとした

test 1 START 
test 2 START 

印刷する必要がありますが、それは唯一のSTARTを印刷

test 1 START 
test2 XYZ 
test 3 ABC 
test 2 START 

public class Findlog{ 
    public static void main(String[] args) throws IOException { 

    BufferedReader r = new BufferedReader(new FileReader("myfile")); 
    Pattern patt = Pattern.compile(".*START$"); 
      // For each line of input, try matching in it. 
      String line; 
      while ((line = r.readLine()) != null) { 
       // For each match in the line, extract and print it. 
       Matcher m = patt.matcher(line); 
       while (m.find()) { 
       // Simplest method: 
       // System.out.println(m.group(0)); 

       // Get the starting position of the text 

       System.out.println(line.substring(line)); 
       } 
      } 
+0

文字列には「endsWith」というメソッドがあります。なぜ正規表現の代わりにそれを使用しないのですか?あなたの現在の問題とは別に、読み込んだ 'line'を出力する代わりに、あなたの正規表現が別名「START」とマッチした行の部分を表示します。 –

+0

OH GOD SPIDERSありがとうございました、私はラインを使用し、期待どおりに動作する部分文字列を削除しました。 – smriti

答えて

1

私はすでに解決策を見つけたと思います。 とにかく動作するはず正規表現は次のとおりです。

".*START$" 

言うた:(。*)everithing取るSTARTおよびSTARTに続いてその行($)の終わりである

+0

ありがとうマルコ。私自身のコードを修正しました。 – smriti

4

line.endsWith("START")チェックで十分です。ここでは正規表現は必要ありません。

-1
public class Findlog{ 
    public static void main(String[] args) throws IOException { 

    BufferedReader r = new BufferedReader(new FileReader("myfile")); 
    Pattern patt = Pattern.compile(".*START$"); 
      // For each line of input, try matching in it. 
      String line; 
      while ((line = r.readLine()) != null) { 
       // For each match in the line, extract and print it. 
       Matcher m = patt.matcher(line); 
       while (m.find()) { 
       // Simplest method: 
       // System.out.println(m.group(0)); 

       // Get the starting position of the text 

       System.out.println(line.substring(line)); 
       } 
      } 
0

フルバージョンあなたのコードは以下のようになります

大文字と小文字を区別しない場合は、コードは次のようになります。

public class Findlog{ 
     public static void main(String[] args) throws IOException { 

     BufferedReader r = new BufferedReader(new FileReader("myfile")); 
     String line; 
     while ((line = r.readLine()) != null) { 
      // For each match in the line, extract and print it. 
      if(line.toLowerCase().endsWith(matches.toLowerCase())) 
      { 
      System.out.println(line); 
      } 
     } 

条件場合だけに変更。

関連する問題