0

データの解析を練習するための簡単なプログラムを作成しようとしています。私のコードを示してから、私がやろうとしていることを説明します。

String data = "<span id=\"yfs_l84_ibm\">176.85</span>";
Pattern pattern = Pattern.compile("\\d+([.]\\d{2})?");
Matcher matcher = pattern.matcher(data);
if (matcher.find())
    System.out.println(matcher.group(1));

私がやろうとしているのは、「176.85」を出力することだけです。小数点の後には常に 2 つの数字があり、小数点の前には 1 つ以上の数字があります。負の数について心配する必要はありませんが、正規表現で負の数を処理しても問題はありません。私のコードは の中に入りますがif、 を出力しnullます。正規表現に何か問題がありますか? 以下は、私が試した他の正規表現です。また、 を出力nullするか、 の中に入ることはありませんif

  1. ^[+-]?(\d+(.?\d+)?|.\d+)$
  2. /^\d+.?\d*$/
  3. /\d+.?\d*/
4

3 に答える 3

1

うーん、パターンをこれに変更してみてください\\d+\\.\\d{2}
そしてmatcher.group(0)
私はそれを試してみましたが、うまくいきました:)

于 2013-10-26T02:44:40.473 に答える
0

その式関数について:

(\\d+([.]\\d{2})?)
于 2013-10-26T02:43:53.940 に答える