0
votes

Sélectionnez des mots excluant certains spécifiques - expression régulière

J'essaie de faire correspondre les mots d'une phrase excluant ceux commencent par @ code>.

Le motif d'origine qui n'exclut pas les mots commençant par @ code> est le Suivant: p>

>>> token_pattern = '(?u)\\b^(?!@)\\w\\w+\\b'
>>> re.search(token_pattern, "#mutt")
>>> re.search(token_pattern, "@mutt")
>>> re.search(token_pattern, "mutt")
<re.Match object; span=(0, 4), match='mutt'>
>>> re.search(token_pattern, "_mutt")
<re.Match object; span=(0, 5), match='_mutt'>


0 commentaires

3 Réponses :


1
votes

Je crois que vous recherchez le suivant à la place:

token_pattern = r'(?u)\b(?<!@)\w\w+\b'


1 commentaires

Wow! Pourriez-vous s'il vous plaît expliquer un peu comment ça marche?



0
votes

essayez-vous de supprimer le caractère ou d'exclure le mot entier?

<re.Match object; span=(0, 4), match='mutt'>
<re.Match object; span=(0, 5), match='#mutt'>
<re.Match object; span=(0, 0), match=''>
<re.Match object; span=(0, 5), match='%mutt'>
<re.Match object; span=(0, 5), match='^mutt'>


0 commentaires

0
votes

Une autre option consiste à faire correspondre une seule caractéristique de mots et affirmer ce qui se trouve à gauche n'est pas un @ .

Si tel est le cas, faites correspondre 1 caractères de mots et utilisez des limites de mots au début et à la fin du motif. xxx

in pièces < ul>

  • (? u) Inline Flag for Unicode (ou utilisez re.u )
  • \ b limite de mot
  • \ w correspond à un mot char
  • (? regardant négatif, affirmer ce qui est directement à gauche n'est pas
    • @ \ w match @ et un mot unique Char
    • ) Fermer LookeBehind
    • \ w + Match 1+ Word caractères
    • \ b limite de mot

      Démo Regex


  • 0 commentaires