0

java-versionコマンドから取得した文字列からjavaバージョンを取り除くためにjava正規表現を書き込もうとしています。

文字列の場合、"java version 1.7.0_17"1.7と17を別々に抽出する必要があります。文字列が"java version 1.06_18"1.06と18を抽出する必要がある場合、最初の文字列は最初の小数点までしか存在しないはずです。以下の正規表現で試してみました、

Pattern p = Pattern.compile(".*\"(.+)_(.+)\"");

しかし、それは1.7.0と17しか抽出しませんが、それでも小数点以下1桁を停止する方法がわかりません。どんな助けでも本当に感謝するでしょう。

4

2 に答える 2

0

あなたが与えるテストケースでは、これを使うことができます:(\d+\.\d+).*_(\d+)

于 2013-03-15T14:09:15.877 に答える
0

あなたの質問をもう一度読んでください。私の古い答えは、最初の小数点で停止することをカバーしていませんでした。これで問題が解決するはずです:

Pattern p = Pattern.compile(".*?(\\d+[.]\\d+).*?_(\\d+)");

テスト済み:

 String input = "java version 1.7.0_17";
 Pattern pattern = Pattern.compile(".*?(\\d+[.]\\d+).*?_(\\d+)");
 Matcher matcher = pattern.matcher(input);
 if (matcher.find()) {
     String version = matcher.group(1); // 1.7
     String update  = matcher.group(2); // 17
}

古いバージョン:

数字を見つける代わりに、残りを取り除きます。

String string  = "java version 1.7.0_17";
String[] parts = string.split("[\\p{Alpha}\\s_]+", -1);
String version = parts[1]; // 1.7.0
String update  = parts[2]; // 17
于 2013-03-15T14:27:32.187 に答える