Est-il une expression régulière pour trouver deux mots dans une phrase?
Est-il une expression régulière pour trouver deux mots dans une phrase? Le crédit supplémentaire pour une expression qui fonctionne sous MS Visual Studio 2008 🙂
Par exemple:
reg_ex_match(A, B, "A sentence with A and B") = true
reg_ex_match(C, D, "A sentence with A and B") = false
Voir aussi cette question
- Essayer de donner un exemple complet de ce que vous voulez arriver? Est-il OU ou ET vous avez besoin? Quelle est la portée de caractères sont autorisés dans A, B, C et D?
- Que voulez-vous dire exactement par “mot”? Une séquence qui est délimité par des espaces ou au début ou à la fin de la chaîne?
Vous devez vous connecter pour publier un commentaire.
Pour de vrai mots:
".*A.*B.*|.*B.*A.*"
Vous pouvez ajouter des espaces entre les mots A et B si vous voulez mots appropriés.
Pourquoi ne pas utiliser la logique booléenne, plutôt que d'un compliqué regex?
Code non testé:
Mise à jour: Cela suppose que A et B sont définis avec les limites de mot:
.*A.*\s.*B.*|.*B.*\s.*A.*
Veuillez noter que l'utilisation du " + " entre A et B. C'est à vous de vous assurer de match distincts A et B. Si ce n'est pas une exigence, Łukasz Lew réponse est correcte.
Mise à JOUR: Changé comme par Bryan excellent site d'observation ci-dessous. L'expression ci-dessus va reconnaître Un séparé de B (ou vice versa) avec au moins un caractère d'espacement (espace, tabulation ou de saut de ligne) entre les deux régions d'intérêt.
backticks
, ou de le mettre sur sa propre ligne, en retrait des quatre espaces.Regex
Suivant l'expression rationnelle correspond à la totalité de la chaîne, uniquement si la chaîne contient tous les mots:
all your words here
. Vous pouvez facilement ajouter d'autres mots ou supprimer existants.Pas si compliqué.
La expression regex que vous recherchez est quelque chose comme ceci:
C'est aussi cas insenitive et peut être appliqué à un texte qui est multiligne.
Testé plus à http://regexr.com/
Essayez de rechercher regexlib, une expression régulière référentiel.