Expressions régulières Python, trouver le domaine de messagerie dans l'adresse
Je sais que je suis un idiot, mais je ne peux pas tirer le domaine à partir de cette adresse e-mail:
'[email protected]'
Mon choix de sortie:
'@gmail.com'
Ma courant de sortie:
.
(c'est juste un caractère de période)
Voici mon code:
import re
test_string = '[email protected]'
domain = re.search('@*?\.', test_string)
print domain.group()
Voici ce que je pense que mon expression régulière dit ('@*?.', chaîne_test):
' # begin to define the pattern I'm looking for (also tell python this is a string)
@ # find all patterns beginning with the at symbol ("@")
* # find all characters after ampersand
? # find the last character before the period
\ # breakout (don't use the next character as a wild card, us it is a string character)
. # find the "." character
' # end definition of the pattern I'm looking for (also tell python this is a string)
, test string # run the preceding search on the variable "test_string," i.e., '[email protected]'
Je suis en fondant ceci dans les définitions ici:
http://docs.activestate.com/komodo/4.4/regex-intro.html
Aussi, j'ai cherché mais d'autres réponses ont été un peu trop difficile pour moi d'obtenir ma tête autour de.
Aide est très appréciée, comme d'habitude. Merci.
Moi si c'est important:
Windows 7 Pro (64 bits)
Python 2.6 (64 bits)
PS. StackOverflow quesiton: Mes messages ne comprend pas de nouvelles lignes à moins que je l'ai frappé "retour" deux fois entre eux. Par exemple (ce sont tous sur une ligne différente quand je suis à la publication):
@ - trouver tous les modèles commençant par le symbole"@")
* - de retrouver tous les personnages après esperluette
? - trouver le dernier caractère avant la période
\ - breakout (n'utilisez pas le caractère suivant comme un joker, nous, c'est une chaîne de caractères)
. - trouver le caractère "."
chaîne de test - exécution de la précédente recherche sur la variable "chaîne_test," c'est à dire, '[email protected]'
C'est pourquoi j'ai eu une ligne vide b/w chaque ligne ci-dessus. Ce que je fais mal? Thx.
source d'informationauteur PatentDeathSquad
Vous devez vous connecter pour publier un commentaire.
Voici quelque chose que je pense pourrait aider
sorties
Comment les regex fonctionne:
@
- scan jusqu'à ce que vous voir ce personnage[\w.]
un ensemble de caractères potentiellement match, donc\w
est tous les caractères alphanumériques, et la période de fin.
ajoute à cet ensemble de caractères.+
un ou plus de l'ensemble précédent.Parce que cette regex de la période de caractère et de tous les alphanumérique après une
@
il va correspondre les domaines de messagerie, même au milieu des phrases.Ok, alors pourquoi ne pas utiliser split? (ou de la partition )
Ou vous pouvez utiliser d'autres méthodes string, par exemple, trouver
et si vous allez extraire les adresses email à partir d'un autre texte
L'aide d'expressions régulières:
Une manière différente:
Voulais juste faire remarquer que chrisaycock de la méthode match adresses e-mail invalides de la forme
correctement, vous assurer que vous êtes juste de correspondance, éventuellement, un email valide avec le domaine que vous avez besoin de le modifier légèrement
L'aide d'expressions régulières:
À l'aide de la ci-dessous expression régulière, vous pouvez extraire n'importe quel domaine souhaitez .com ou .dans.
sortie