1

文字列内のすべての負の浮動小数点数を見つけて、それらを配列に格納したいと考えています。私の正規表現は正しいと思いますが、私の方法に何か問題があります。

Pattern pattern = Pattern.compile("[-]?[0-9]*[.][0-9]+$");      
String[] results = pattern.split("|AAA--A A05_#A| |-999.999| |-55.7|");
4

1 に答える 1

6

あなたの正規表現は、一致を文字列の最後に固定しますが、これはあなたが望むものではありません。

同様に、Pattern.splitあなたが望むことをしません。以下にサンプルコードを示します。

Pattern pattern = Pattern.compile("[-]?[0-9]*[.][0-9]+");
String text = "|AAA--A A05_#A| |-999.999| |-55.7|";
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
    System.out.println(matcher.group());
}

これは以下を出力します:

-999.999
-55.7

while明らかに、ループ内でリストまたは同様のものに追加できます。すべての一致のコレクションを返すメソッドは知りませんが、上記のようなコードに基づいて、自分でそれを行うユーティリティ メソッドを簡単に作成できます。

編集: コメントに記載されているように、負の値のみ-を検索する場合は、オプションにする必要はありません (また、セットにする必要もありません。問題はありませんでした-?)。

于 2012-07-08T19:59:23.803 に答える