2016-05-04 5 views
0

私はかなりクラスのJavaで新しくなっているので、私は単純なregexクラスを書くことに行きました。そして、私は失敗しました。ここでシンプルなregexクラスを書くと空の結果しか得られません

はメインクラスでクラス

import java.util.ArrayList; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class HRM_SwallowTableExtractor { 
    String x; 
    String pattern; 
    ArrayList<String> myArray = new ArrayList<String>(); 

    public HRM_SwallowTableExtractor(String x,String pattern) { 
     x=this.x; 
     pattern=this.pattern; 
    } 

    public ArrayList<String> SwallwTabExtract(String x,String pattern) { 
     Pattern pat = Pattern.compile(pattern); 
     Matcher matcher_pattern = pat.matcher(x); 

     while (matcher_pattern.find()) { 
      String p=matcher_pattern.group(1).trim(); 
      String [] arr=p.split("\\s"); 
      for (int i=0;i<arr.length;i++){ 
       myArray.add(arr[i]); 
      } 
     } 
     return myArray; 
    } 
} 

とここにある:

String UESRecovTime_pattern="(UES_recovery_time_\\(msec\\).*)"; 
HRM_SwallowTableExtractor swallTabExtract=new HRM_SwallowTableExtractor(stuff,UESRecovTime_pattern); 

私はこれを実行したときしかし、私は空の配列が返されます。問題は、パターンが見つからないということです(そうです、それはテキスト本文にあります)。これは、主なテキストがどのようにインスタンス化されたクラス(String xとして)に持ち込まれるか、またはパターンがどのようにインスタンス化されるかと関係があると私は考えます。私はこのことを理解する方法を知らない。私は使用しているテキストを上に置いていないが、必要ならば幸せにする。

答えて

2

ローカル変数とインスタンスの変数を誤解している可能性があります。または、あなたはちょうど反転の誤りがあります。

public HRM_SwallowTableExtractor(String x,String pattern) { 
    //x=this.x; //this should be invert 
    this.x = x; //you should try this 
    pattern=this.pattern; 
} 
関連する問題