Pattern matching bzw RegExp

timbub

Grünschnabel
Hallo,
ich komme bei folgender Sache nicht weiter: ich möchte ein Feld von Integerwerten (momentan als String vorliegend) erkennen dass eine bestimmtes Schema besitzt.
Also die Felder können so aussehen: [3,6,10,14,16] oder [3,16,6,9,12,15,16,2] oder sogar [3,16,6,16,9,16,12,16,15,16]. Alles andere soll nicht matchen.
Also entweder muss eine monoton steigende Zahlenfolge enthalten sein bis zum maximalwert 16 ODER es kommt immer der Wert 16 auf jedem 2.ten Eintrag vor und die Zwischenwerte sind dann wieder aufsteigend.
Ein RegExp für solche Strings generell zu erkennen ist ja klar, aber hier sind ja beziehungen zwischen den Werten von Bedeutung.... kann man sowas überhaupt über Pattern erkennen?

gruß und danke
Tim
 
Zuletzt bearbeitet:
Hallo,

nach knapp 400km Autofahren fällt mir jetzt nur noch sowas ein:
Java:
/**
 * 
 */
package de.tutorials;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @author Tom
 */
public class SequenceDetection {

  /**
   * @param args
   */
  public static void main(String[] args) {
    String sequenceInput = "3,16,6,9,12,15,16,2";
    Scanner scanner = new Scanner(sequenceInput).useDelimiter(",");
    int lastNumber = -1;
    
    List<Integer> currentSequence = new ArrayList<Integer>();
    List<List<Integer>> foundSequences = new ArrayList<List<Integer>>();
    
    while (scanner.hasNextInt()) {
      int number = scanner.nextInt();
      
      if(lastNumber >= number){
        foundSequences.add(currentSequence);
        currentSequence = new ArrayList<Integer>();
      }
      
      currentSequence.add(number);
      lastNumber = number;
    }
    foundSequences.add(currentSequence);
    
    System.out.println(foundSequences);
  }
}

Ausgabe:
Code:
[[3, 16], [6, 9, 12, 15, 16], [2]]

... und ich muß jetzt ins Bett...

Gruß Tom
 
Zurück