2016-08-24 7 views
0

は、我々は範囲正規表現

  • < 0100>
  • (100,1000>
  • (1000,10000>
  • を(持っているとしましょう昇順に及びます次のように10000、無限大)

は、CSV行として表現:

0100; 100,1000; 1000,10000、10000

CSVの行が昇順で整数の範囲が含まれていることを確認します正規表現とは何ですか?

+1

なぜ数学演算子ではなく、純粋な正規表現を使用したいのですか? – hjpotter92

+1

正規表現は数値を比較することを意味するものではありません。私はこれのための正規表現に頼る以外の他のソリューションを探したいと思うと思います。 –

+0

私はregexがここで厄介な選択だと思います。 Javaでは、セミコロンで各行を分割し、結果の配列を順番に調べ、各番号が増加し続けることを確認します。 –

答えて

1

あなたは本当に正規表現で遠くに行くことはありません。さらに、必要なものを確認するアルゴリズムを実行するのも簡単です。 Javaで例えば

、:

public static boolean ascendingOrder(String csv) { 
    String[] values = csv.split(",|\\;"); // Split on either "," or ";" 
    for (int i = 1; i < values.length; i++) { 
     int lastValue = Integer.parseInt(values[i-1]); 
     int currentValue = Integer.parseInt(values[i]); 
     if (i%2==0) { // If it's the lower bound, should be greater or equal than last higher bound 
      if (lastValue > currentValue) return false; 
     } else { // If it's the higher bound, ensure no empty interval 
      if (lastValue >= currentValue) return false; 
     } 
    } 
    return true; 
} 

これは範囲が昇順であり、重複しないことを確認します。