/ / Comment puis-je construire une expression rationnelle pour correspondre à un modèle tout en excluant certains mots connus qui correspondraient au modèle - regex

Comment puis-je construire une expression rationnelle pour correspondre à un modèle tout en excluant certains mots connus qui correspondraient au modèle - regex

Comment puis-je construire une expression rationnelle pour correspondre à un modèle tout en excluant certains mots connus qui correspondraient au modèle? Dans l'exemple, j'ai cette chaîne:

J'aime d.r.e.a.m à faire h i k i n g.

et j'ai la regex suivante: b (. {1,2} (s |. | - | _)) {2,}

Cela correspond à:

à d.r.e.a.m à

faire h i k i n g.

Ce que je veux, c'est changer cette expression rationnelle de manière à correspondre à:

rêver

randonnée.

Si je le change en ceci b ([^ (to)] {1,2} (s |. | - | _)) {2,}

cela fonctionnera partiellement, mais cela exclurait les lettres individuelles comme "t" "o" au lieu du mot entier "to"

Comment résoudre ceci?

Réponses:

2 pour la réponse № 1

Vous pouvez utiliser

/b(?!(?:I|at|[td]o)b)w{1,2}(?:[W_](?!(?:I|at|[td]o)b)w{1,2})*b/

Voir cette démo Rubular

Ça correspond

  • b - une limite de mots
  • (?!(?:I|at|[td]o)b)w{1,2} - suivi d'un mot de caractère de 1 ou 2 mots différent de I, at, to ou do
  • (?:[W_](?!(?:I|at|[td]o)b)w{1,2})* - 0+ répétitions de:
    • [W_] - un caractère autre qu'un mot ou _
    • (?!(?:I|at|[td]o)b)w{1,2} - voir au dessus
  • b - une limite de mot.