Je ne comprends pas pourquoi le premier élément de ma sortie est vide et non "@stackoverflow" sortie: p>
4 Réponses :
Parce qu'il l'utilise comme "@" code> ou "# (\ w +)" code>. Essayez:
Parce que votre regex est interprété comme [correspondant juste sortie: p> @ code> ou # code> avec quelques \ w code> après cela et capturez uniquement le < Code> \ w code> s], vous pouvez utiliser cette regex à la place pour obtenir les deux symboles avec ce qui est après eux:
C'est parce que le modèle ou p>
et quand il correspond au premier côté du Vous pouvez résoudre ce problème en utilisant le modèle @ | # (\ w +) code> correspond le motif: p>
@ code> p>
# (\ w +) code> p>
| code>, le motif ne capture rien. p>
[@ #] (\ w +) code>. p>
C'est parce que Votre code renvoie exactement ce qui est attendu: p> correspond à "Stackoverflow" dans "@stackoverflow", essayez ceci: p> Ceci est identique à la spécification de la priorité explicitement: P> dans le contexte de r "@ | # (\ w +)" code> est identique que r "(?: @) | (?: # (\ w +))" code >, de sorte que votre regex recherche soit un symbole de hachage suivi de quelque chose ou d'un symbole "à" seul em>.
"(?: @ | #) (\ w +)" code> signifie:
* Faites correspondre soit «@» ou «#», mais ne le capturez pas
* Si la correspondance ci-dessus, correspondez (\ w +) code> et capturez le résultat, car (...) code> est un groupe de capture p> re.findall code>, seuls les groupes de capture apparaîtront dans la liste résultante. p> p>