文字列内のすべての負の浮動小数点数を見つけて、それらを配列に格納したいと考えています。私の正規表現は正しいと思いますが、私の方法に何か問題があります。
Pattern pattern = Pattern.compile("[-]?[0-9]*[.][0-9]+$");
String[] results = pattern.split("|AAA--A A05_#A| |-999.999| |-55.7|");
あなたの正規表現は、一致を文字列の最後に固定しますが、これはあなたが望むものではありません。
同様に、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
明らかに、ループ内でリストまたは同様のものに追加できます。すべての一致のコレクションを返すメソッドは知りませんが、上記のようなコードに基づいて、自分でそれを行うユーティリティ メソッドを簡単に作成できます。
編集: コメントに記載されているように、負の値のみ-
を検索する場合は、オプションにする必要はありません (また、セットにする必要もありません。問題はありませんでした-?
)。