Expressions régulières (RegEx) — expliquées simplement
Ce qu'est une expression régulière, où FlowBotCommander la propose (titre de fenêtre, Vérifier le texte) et les dix caractères dont vous avez vraiment besoin — avec des exemples de jeux.
À deux endroits, FlowBotCommander propose le type de correspondance Expression régulière. Vous n'en avez pas besoin — « contient », « commence par » et « finit par » suffisent presque toujours. Mais quand un texte change sans cesse (nombres, heures, compteurs d'onglets dans le titre de fenêtre) ou que l'OCR confond des lettres, un petit motif vous fait avancer. Cet article explique exactement autant de RegEx qu'il vous en faut.
Qu'est-ce qu'une expression régulière ?
Une expression régulière (RegEx en abrégé) est un motif qui décrit à quoi un texte peut ressembler — au
lieu d'un mot fixe. « Contient Or » ne correspond qu'au mot Or. Le motif Or : \d+ correspond à « Or : 5 »,
« Or : 120 », « Or : 99999 » — n'importe quel nombre après « Or : ».
Les lettres et chiffres normaux se représentent eux-mêmes dans le motif. Seuls quelques caractères spéciaux ont une signification :
| Caractère | signifie | Exemple | correspond à |
|---|---|---|---|
. |
un caractère quelconque | L.vel |
Level, Lövel, L3vel |
\d |
un chiffre 0–9 | Lv \d |
Lv 1, Lv 7 |
+ |
le précédent une ou plusieurs fois | \d+ |
5, 12, 99999 |
* |
le précédent zéro ou plusieurs fois | Or *\d+ |
Or5, Or 5, Or 5 |
? |
le précédent optionnel (0 ou 1 fois) | Lv\.? \d+ |
Lv 3, Lv. 3 |
^ |
début du texte | ^Victoire |
« Victoire ! » — pas « Pas de victoire » |
$ |
fin du texte | Editor$ |
« Doc – Editor » |
[abc] |
un de ces caractères | Lv[. :] |
Lv. / Lv: / Lv␣ |
[0-9] |
un caractère de l'intervalle | [1-3] |
1, 2 ou 3 |
a|b |
a ou b | Victoire|Victory |
Victoire ou Victory |
\. |
un vrai point (au lieu de « caractère quelconque ») | 1\.5 |
1.5 — pas 1x5 |
Les caractères spéciaux que vous voulez littéralement (. + * ? ( ) [ ] | $ ^) prennent une
barre oblique inverse devant : \. \+ \(. Majuscules et minuscules ne comptent pas dans FlowBotCommander —
victoire correspond aussi à « VICTOIRE ».
Où trouver RegEx dans FlowBotCommander
1. Titre de fenêtre — type de correspondance « Expression régulière »
Dans Démarrer (type de correspondance global), Changer la source d'image, Mettre la fenêtre au premier plan, Déplacer/Redimensionner la fenêtre et les nœuds d'overlay, vous choisissez comment le titre de fenêtre est comparé (voir Fenêtre et source d'image). Le plus souvent, contient suffit. Vous avez besoin de RegEx quand deux fenêtres ont des noms proches :
| Situation | Motif | Explication |
|---|---|---|
| Seulement l'onglet du navigateur avec le jeu, pas celui du wiki | ^Clicker Heroes |
le titre doit commencer par « Clicker Heroes » |
| Le titre alterne entre « Jeu (1) », « Jeu (2) » … | ^Jeu \(\d+\)$ |
parenthèses littérales, un nombre entre les deux |
| Exactement « Editor » à la fin, peu importe avant | Editor$ |
le titre finit par Editor |
| Client anglais ou allemand | Inventory|Inventar |
l'un des deux |
2. Vérifier le texte — mode « Expression régulière »
Le nœud de condition Vérifier le texte compare un texte (le plus souvent issu de Lire le texte (OCR)) avec votre motif et fournit vrai ou faux sur la sortie Résultat — que vous reliez à un Embranchement (voir Boucles et conditions). Exemples :
| Vous voulez savoir … | Motif | correspond p. ex. à |
|---|---|---|
| Y a-t-il un nombre dans le texte ? | \d+ |
« Or 250 » |
| Est-ce un nombre à partir de 100 (trois chiffres ou plus) ? | \d{3,} |
100, 2500 — pas 99 |
| Le combat est-il fini — dans n'importe quelle langue ? | Victoire|Victory|Défaite|Defeat |
« VICTORY! » |
| Un compte à rebours tourne-t-il (mm:ss) ? | \d\d:\d\d |
« 02:59 » |
| Y a-t-il « Level » plus un nombre bien que l'OCR mange le point ? | L[ev]*\.? *\d+ |
« Lv. 5 », « Lvl 5 », « Level 5 » |
Vous avez rarement besoin de RegEx pour les nombres : pour « Or ≥ 50 », préférez Nombre depuis le texte (extrait le premier nombre du texte) puis Comparer nombre — c'est lisible sans motif. RegEx vaut le coup pour les mots, les formats et « l'un de ceux-ci ».
Rattraper les erreurs OCR
La reconnaissance de texte lit volontiers « Lv. 1 » comme « L"; 1 » ou « 0 » comme « O » (voir Lire le texte (OCR)). Au lieu de déplacer la zone pour la dixième fois, rendez le motif tolérant :
- Lettres confondues comme ensemble :
[O0]correspond à O et 0,[Il1]à I, l et 1. - Rendre les caractères incertains optionnels :
Lv\.? ?\d+autorise point et espace — ou pas. - Ne vérifier que la partie sûre : au lieu de « Prêt au combat ! »,
Prêtsuffit.
Comment tester un motif
- Créez un nœud Vérifier le texte, mode Expression régulière, saisissez le motif.
- Reliez en entrée une variable avec un texte d'exemple (ou directement le nœud OCR).
- Lancez le bot avec F5 et regardez le journal : le nœud écrit « Text-Prüfung ⇒ True » ou « False ».
- Construisez le motif pas à pas : d'abord
Or, puisOr \d, puisOr \d+— vous voyez ainsi tout de suite quelle partie ne correspond pas.
Si ça ne marche pas : un motif invalide (p. ex. une parenthèse ouverte () fait évaluer le nœud toujours
comme faux — sans message d'erreur. Causes les plus fréquentes : point sans barre oblique inverse (1.5
correspond aussi à « 125 »), + oublié (\d ne correspond qu'à un chiffre), espaces dans le texte absents
du motif. Dans le doute, commencez par contient et un mot court — RegEx seulement si ça ne suffit pas.