Voici un petit problème que je n'ai pas réussi à résoudre de manière propre avec une expression régulière.

Je veux vérifier qu'un texte contient à la fois un mot commençant par "toto", un mot commençant par "titi", et un mot commençant par "tata".

Si ils avaient forcément été dans cet ordre, j'aurais utilisé quelque chose du genre (je schématise):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
String expr = ".+\btoto.+\btiti.+\btata.+";
Mais voilà, ils peuvent apparaître dans n'importe quel ordre, et je voudrais vérifier qu'ils sont tous les trois présents.

Evidemment, je peux créer 3 expressions... mais j'aimerais n'en avoir qu'une seule, pour ne pas reparcourir plusieurs fois toute la chaîne (qui est longue).

La seule solution que j'ai trouvée en une expression est de faire des "OU" entre les 6 ordres possibles, mais je ne trouve pas cela propre (surtout si je veux passer à la recherche de 4/5 chaînes où le nombre de "OU" explose).

Ma question est donc: existe-t'il un moyen plus élégant de faire ça (en une seule expression)?