1

私はたくさんのを持っています:

FooModel f = new FooModel();
..
Bar Model b = new BarModel();

Javaソースコードからモデルオブジェクトを取得する必要がありますが、宣言を完了したくありません。オブジェクト宣言が必要です。

正規表現を試してみました(strLineはInputStreamReaderの文字列行です)。

String pattern = ".*Model (.+)";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(strLine);

if(m.find())
    System.out.print(m.group(1) + "\n");

私はインスタンス化を得ることができます。しかし、私は同じことをしますが、オブジェクト宣言( "="の前)に対してです。

これどうやってするの?

できます

m.group(0).replace(m.group(1),"");

しかし、それは本当の正規表現ではありません。

4

2 に答える 2

0

1 行に 1 つの開始ステートメントがある場合:

import java.util.regex.*;

class  FindModel
{
    public static void main(String[] args) 
    {
        String s = "  FooModel f = new FooModel();";
        String pattern = "([^\\s]*?Model[^=]*)=";
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(s);

        if(m.find())
            System.out.print(m.group(1) + "\n");
     }
}

1 行に複数のステートメントがある場合:

import java.util.regex.*;

class  FindModel
{
    public static void main(String[] args) 
    {
        String s = "  FooModel f = new FooModel();int i=0,j; BarModel b = new BarModel();";
        String pattern = "([^;\\s]*?Model[^=]*)=.*?;";
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(s);

        while(m.find())
            System.out.print(m.group(1) + "\n");
     }
}

出力:

FooModel f
BarModel b
于 2012-05-16T16:34:23.500 に答える