試合

2016-09-30 6 views
1

後、私は以下の通りである。その一例はいくつかのテキスト持っている正規表現は、行のn個の数を取得する:試合

Lactose Hydrogen Breath Test 
    Time 
     Time Point (min) 
     H2 (ppm) 
     H2 Change 

    (ppm) 
     Hydrogen (ppm) 

     0937 
     0 
     0/0 

     Time point (min) 

     0 
     10 
     20 
     30 
     40 
     50 
     60 
     70 
     80 
     90 
     100 


     Notes: Measurements at 120 and 150 mins are insignificant changes and are most probably due to sporadic error. 

     Results are not consistent with Lactose malabsorption. 

     Lactose intolerance is not suggested. 

This is now some other text that can be anything 

を私は単に「ノート」の後最初の5行を抽出し、背後にあるすべてのままにしておきたいです乳糖不耐症にこの場合は他のもの(アップが示唆されていないが、それの後にテキストの任意の種類があることができ

私はこれを抽出するために、現在のJavaを使用しています:。私は取得していますが

public Map<String,String> LactoseTestExtractor(String str){ 

     Pattern match_pattern = Pattern.compile("Lactose Hydrogen Breath Test(.*?Interpretation[^\\r|^\\n]*)",Pattern.DOTALL); 
     Matcher matchermatch_pattern = match_pattern.matcher(str); 

     Pattern match_pattern2 = Pattern.compile("Lactose Hydrogen Breath Test.*?(Notes:.*?\\r|\\n[\\r|\\n]?.*?\\r|\\n[\\r|\\n]?)",Pattern.DOTALL); 
     Matcher matchermatch_pattern2 = match_pattern2.matcher(str); 

     if (matchermatch_pattern.find()) { 
      lact=matchermatch_pattern.group(1).toString().trim(); 
      System.out.println("lact1"+lact); 

     } 

     else if (matchermatch_pattern2.find()){ 
      lact=matchermatch_pattern2.group(1).toString().trim(); 
      System.out.println("lact2"+lact); 

     } 

をent私が欲しいものの代わりに怒りを返す:

Measurements at 120 and 150 mins are insignificant changes and are most probably due to sporadic error. 

     Results are not consistent with Lactose malabsorption. 

     Lactose intolerance is not suggested. 

どうすれば修正できますか?そのJavaまたは正規表現の問題であるかどうかわからない

+1

入力に「ラクトース水素呼気テスト」が含まれていないので、なぜこれらのパターンのどちらかが一致しますか? –

+2

なぜこれに対してregexpを使いたいのですか? '\ r \ n] +'で区切って、最終的に結果の配列から利用可能な5つの最初の要素を取ります。 – A4L

+0

@Andy Turner-謝罪私は例を変更しました –

答えて

0

まず、Java 8 supports \Rto match a linebreak。正規表現については

次のように、あなたはNote:を一致させるために後読みを使用して、次の5行することができます

(?<=Notes:)(.*\\R){5} 

結果はgroup(0)です。