2017-09-21 4 views
0

いくつかのコードのためのstylecheckerを書くしようとし、複数行の正規表現のためにJavaでbackrefrencesを使用して...ここに正規表現がBackrefrencesは

.*import com.+([a-zA-Z]+Factory\.class).*\\1.*

は、基本的には、検索したいようになりますコード内のファクトリクラスの最初のインスタンスです。私の例のコードは次のようになります。

import com.sample.OtherClass; 
import com.sample.cool.SomeFactory.class; 

// other nonsense 

@Import(clazz = SomeFactory.class) 
// other nonsense 

私の予想試合は@Import文のSomeFactory.classだろうが、それはこれをピックアップしていません...任意の提案を? Javaの使用で

(?s)import\s+com.+?\.([a-zA-Z]+Factory\.class).*(\1) 

+1

パターンをコンパイルするときに 'Pattern.DOTALL'フラグを使用することも忘れないでください。 – Zefick

+1

あなたは予想される試合を追加できますか? –

答えて

1

あなたは、この正規表現を使用することができます

final String regex = "(?s)import\\s+com.+?\\.([a-zA-Z]+Factory\\.class).*(\\1)"; 

RegEx Demo

キャプチャグループ#1インポート行とキャプチャグループ#2がSomeFactory.class後にした後SomeFactory.classです@Import行。

+0

@backwardsboy:これがうまくいかない場合は教えてください。 – anubhava