J'essaie de capturer des mots constants dans une chaîne. Cette constante est:Qu'est-ce que regex peut capturer 2 mots exacts dans une phrase?
- un mot
- suivi par un séparateur (espaces, points, tiret ou underscore)
- un autre mot
- puis un séparateur (voir # 2) ou à la fin de la ligne ou de la chaîne.
Pour l'exemple de bien disons que je suis à la recherche de "Bob 1", dans les chaînes suivantes:
Hello, I'm Bob 1 --> Should capture Bob 1
Hello, I'm Bob 11 --> Should capture nothing (Bob 1 is not at the end or followed by a separator)
Hey, it's Bob-1 over there --> Should capture Bob-1
Hey, it's Bob - 1 over there --> Should capture nothing (Bob should be followed only by one separator not 3 like here)
Bob.1 --> Should capture Bob.1
Bob_1 rules! --> Should capture Bob_1
J'ai un regex qui fonctionne la plupart du temps:
/Bob[\s._-]1[\s._-]/ig
En la deuxième liste je ne sais pas comment ajouter la fin de la chaîne dans les caractères possibles ... Qui se termine en seulement la dernière ligne dans la démo en direct ci-dessous qui devrait être une correspondance et ce n'est pas capturé. Voir le live demo.
J'utilise pcre (en PHP).
Juste pour ajouter, que vous devez vérifier ce qui vient avant « Bob » parce que « Bob » pourrait faire partie d'une chaîne donc pourquoi j'ai inclus un \ b au début. –
Je n'ai pas besoin d'y échapper dans mon exemple car c'est le dernier caractère de la liste. Si ce n'est pas le moteur pense que c'est une gamme de caractères et vous devez y échapper. – AlexV