Page 1 sur 1

[UDF] RegExp - Extraction des adresses Mail d'un fichier.

Posté : jeu. 28 août 2008 01:55
par Tlem
Voici un script qui vous permettra d'extraire les adresses Mail d'un fichier quelconque en éliminant les doublons possible.

J'ai trouvé le pattern de l'expression régulière sur le forum Anglais, ainsi que la fonction _ArrayUnique que j'ai recopié tel quel.
Vous constaterez aussi qu'il n'y à aucun Include. 8)

Pour faire au plus simple, je n'ai pas mis les contrôles d'ouverture et écriture des fichiers.

Code : Tout sélectionner

#cs ----------------------------------------------------------------------------
    
    AutoIt Version : 3.2.12.0
    Auteur:         Tlem
    
    Fonction du Script :
    Extraction des adresses Email d'une page HTML avec filtrage de doublons.
    
#ce ----------------------------------------------------------------------------

$InputFile = "Recup_Email.htm"
$OutputFile = "Liste_Email.txt"

$File = FileRead($InputFile)

$aEmail = StringRegExp($File, "mailto:([A-Za-z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})", 3)

If Not @error Then
    $aFilteredEmail = _ArrayUnique($aEmail, '', 0)

    Dim $Res
    For $i = 1 To $aFilteredEmail[0]
        $Res &= $aFilteredEmail[$i] & @CRLF
    Next

    FileWrite($OutputFile, $Res)
EndIf

ShellExecute($OutputFile)
Exit


Func _ArrayUnique(ByRef $aArray, $vDelim = '', $iBase = 1, $iUnique = 1)
    If $vDelim = '' Then $vDelim = Chr(01)
    Local $sHold
    For $iCC = $iBase To UBound($aArray) - 1
        If Not StringInStr($vDelim & $sHold, $vDelim & $aArray[$iCC] & $vDelim, $iUnique) Then _
                $sHold &= $aArray[$iCC] & $vDelim
    Next
    Return StringSplit(StringTrimRight($sHold, StringLen($vDelim)), $vDelim)
EndFunc   ;==>_ArrayUnique

Re: [UDF] RegExp - Extraction des adresses Mail d'un fichier.

Posté : sam. 20 sept. 2008 13:50
par Tlem
Pour ceux et celles qui recherche le pattern d'une expression régulière, je vous recommande d'aller faire un tour ici.

Re: [UDF] RegExp - Extraction des adresses Mail d'un fichier.

Posté : sam. 20 sept. 2008 14:29
par ani
En voici un autre : RegexLib

faudra revoir le pattern, à mon avis comme çà il prendra pas tout les noms de domaine (australien)...co.uk

Sinon :([A-Za-z0-9._%-]+@[a-zA-Z0-9.-]+\.[\w]{2,4})
peut devenir ([-.\w]+@[-.\w]+\.[\w]{2,4})

autre parttern
([-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6})

Re: [UDF] RegExp - Extraction des adresses Mail d'un fichier.

Posté : ven. 14 nov. 2008 16:37
par Tlem
Voici donc une petite fonction de validation d'une adresse email :

Code : Tout sélectionner

If _IsValidEmail("toto@titi.fr") Then
    MsgBox(64,"", "Adresse email valide")
Else
    MsgBox(16,"", "Adresse email invalide")
EndIf

Func _IsValidEmail($Email)
    Return StringRegExp($Email, "^[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}$")
EndFunc