2016-08-24 5 views
0

이의 우리가 범위정규 표현식은

  • < 0100>
  • (100,1000>
  • (1000,10000>
  • 를 (있다고 가정 해 봅시다 오름차순으로 범위 다음 10,000 무한대)

는 CSV 행으로 표현 :

,617,

0100; 100,1000, 1000,10000 10000

CSV 라인은 오름차순으로 정수 범위를 포함하는 검증하는 정규 표현식은 무엇입니까?

+1

왜 수학 연산자가 아닌 순수 정규식을 사용하고 싶습니까? – hjpotter92

+1

정규식은 숫자를 비교하는 것이 아닙니다. 난 당신이 정규식에 의존하는 것보다 다른 솔루션을 찾고 싶습니다 것 같아요. –

+0

정규식은 비참한 선택이라고 생각합니다. Java에서는 각 행을 세미콜론으로 분할 한 다음 결과 배열을 순서대로 살펴보고 각 번호가 계속 증가하는지 확인합니다. –

답변

1

당신은 정말로 정규식으로 가지 않을 것입니다. 또한 원하는 것을 검증하는 알고리즘을 간단하게 수행 할 수 있습니다. 자바 예를 들어

:

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; 
} 

이 범위가 증가하는 순서로하고 중복되지 않는 것을 확인합니다.