/*
と*/
の間のテキストを一致させる必要があります。これらはJavaブロックコメントです。どのようにJava正規表現のコメントブロック間のテキストを一致させるには?
今のところ、トークンを閉じても終了しないため、意図したとおりに動作しないプログラムを作成しました。*/
。ここでは、コードは次のとおりです。
public static void main(String[] args) {
String s = "public void /* sdksd\n*k/sss\\d\nsd */ main class\n/*String s = null;*/trtgg";
Matcher matcher = Pattern.compile("(?s)/\\*(.*)(?=\\*/)").matcher(s);
while (matcher.find()) {
String group = matcher.group(1);
System.out.println("group="+group);
}
}
それは印刷されます。
group= sdksd
*k/sss\d
sd */ main class
/*String s = null;
期待出力は次のようになります。
group= sdksd
*k/sss\d
sd
group=String s = null;
それが最初のトークン*/
を閉じる時に停止しないのはなぜ?
これを達成する別の方法はありますか?
'*' '貪欲であるので、あなたが使用する必要がある*'それは怠惰にします。。?。コメント抽出はかなり難しいかもしれませんが。 – anubhava
[this solution](http://stackoverflow.com/a/36328890/3832970)を使用してください。マッチを完了するのに必要なステップは、Jiriが提案した最高のものより4倍以上です。 –