Une suite au poker est constituée de cinq cartes consécutives, par exemple 23456
ou 89TJQ
. Avec une main "triée", l'expression régulière pourrait être écrite comme suit :
^(A2345|23456|34567|45678|56789|6789T|789TJ|89TJQ|9TJQK|TJQKA)$
C'est un peu verbeux mais assez direct. Cependant, serait-il possible de générer une expression régulière (sensée) si la main n'était pas ordonnée ? Par exemple, si la main était 52634
ou JQ89T
??
Une façon possible serait d'utiliser un lookahead ?=.*
(qui serait essentiellement "non trié"), par exemple :
^(?:
(?=.*A)(?=.*2)(?=.*3)(?=.*4)(?=.*5)
|(?=.*2)(?=.*3)(?=.*4)(?=.*5)(?=.*6)
|(?=.*3)(?=.*4)(?=.*5)(?=.*6)(?=.*7)
|(?=.*4)(?=.*5)(?=.*6)(?=.*7)(?=.*8)
|(?=.*5)(?=.*6)(?=.*7)(?=.*8)(?=.*9)
|(?=.*6)(?=.*7)(?=.*8)(?=.*9)(?=.*T)
|(?=.*7)(?=.*8)(?=.*9)(?=.*T)(?=.*J)
|(?=.*8)(?=.*9)(?=.*T)(?=.*J)(?=.*Q)
|(?=.*9)(?=.*T)(?=.*J)(?=.*Q)(?=.*K)
|(?=.*T)(?=.*J)(?=.*Q)(?=.*K)(?=.*A)
)
.{5}$
Y a-t-il d'autres / meilleures approches pour déterminer si une suite existe en utilisant uniquement des expressions régulières ?