2017-05-24 4 views
0

ハイフンで表示された2つの実数(符号なし)の範囲を適切に解析する正規表現が必要です。2つの実数の範囲を解析するためのキャプチャされたグループを持つ正規表現

有効な入力:

1-3

3.14から7.50

0から4.01

これは、Android上でJavaです。

私の現在のアプローチ:それは最小を取得しようとする時にクラッシュ

java.lang.IllegalStateException: No match found 
    at java.util.regex.Matcher.getMatchedGroupIndex(Matcher.java:1314) 
    at java.util.regex.Matcher.group(Matcher.java:572) 

私は本当に表現が間違っているのか分かりません。

私は特に、その問題が何であるかについての説明を高く評価します。ハイフンの周りの任意の空白を許す正規表現は余りにいいかもしれません(私はそれを動作させたいと思いますが、私はそれを全く動かすことができないので、これを削除しました)。

答えて

1

あなたは小数部分をオプションにする必要があります。

(?:\\.\\d+)
Pattern pattern = Pattern.compile(
    "(?<Minimum>\\d+(?:\\.\\d+)?)-(?<Maximum>\\d+(?:\\.\\d+)?)"); 
  • ?は、そのグループも非キャプチャグループ
作るため ?:を使用することをお勧めオプションの試合
  • ようになります

    に電話する前にmatcher.find()またはmatcher.matches()に電話する必要があります10方法。

  • +3

    いいえ、それは関連していませんが、確かにそれは次の質問でしょう。 –

    +0

    ああ、 'find()'または 'matches()'は '.group()'の前に呼び出される必要があります。 – anubhava

    +1

    右!ありがとう。ありがとう@WiktorStribiżew –

    関連する問題