Bonjour à tous,
Je ne sais absolument pas si je poste au bon endroit, donc désolé par avance si je me trompe de forum.
J'utilise la librairie de dk.brics pour la construction d'automates
http://www.brics.dk/automaton/doc/in...on/RegExp.html
Je précise tout de suite que je n'ai pas la possibilité de changer de librairie...
Je voudrais créer un automate qui interdise l'enchainement de la valeur -1, avec d'autres valeurs.
Par exemple :
-1, 2 doit être refusé
2, -1 est accepté
Bref cela devrait être simple, en tout cas, c'est facile à faire avec juste des nombres positifs, mais le fait d'avoir un -1, me pose des problèmes.
Voilà ce que j'ai essayé :
Est ce que quelqu'un a une idée du problème?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 List<String> forbiddenRegExps = new ArrayList<String>(); String allButMinusOne = "(0|1|2|3|<-2>|<-3>)"; for(int i=0 ; i<2 ; i++){ forbiddenRegExps.add(allButMinusOne + "*" + "<-1>+" + allButMinusOne +"+"); System.out.println(allButMinusOne + "*" + "<-1>+" + allButMinusOne +"+"); } // --- Building the complete automaton FiniteAutomaton auto = new FiniteAutomaton(); for (String reg : forbiddenRegExps) { FiniteAutomaton a = new FiniteAutomaton(reg); auto = auto.union(a); auto.minimize(); } auto = auto.complement(); auto.minimize(); boolean b = auto.run(new int[]{0, 1, 2, 3, -1, -1}); System.err.println("result 1 : " + b + " (should be true)"); boolean b2 = auto.run(new int[]{0, 1, 2, 3, -1, -1, 3}); System.err.println("result 2 : " + b2 + " (should be false)");
Un grand merci d'avance !!
Partager