Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6122[/thread]

E-Mail Adressen extrahieren: große Datei filtern



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
Froschpopo
 2004-03-07 17:42
#80601 #80601
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Ich habe eine große Datei in der unter anderem auch E-Mail Adresse enthalten sind. Nun möchte ich diese Adressen extrahieren und ausgeben (bevorzugt in einer while/for).

Die Dateien haben eigentlich kein spezielles Format. Es ist alles durcheinander und zwischendrin sind meine E-Mail Adressen. Die Datei ist eine alte Textdatenbank die mein Programm leider zerstört hat. Da seinzigste was gerettet werden konnte waren die Leerzeichen vor und nach der E-Mail Adresse.
format_c
 2004-03-07 23:02
#80602 #80602
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Mehr braucht man doch auch nicht.

Code: (dl )
1
2
3
4
5
6
7
use strict;

my $text = 'Das ist doch [EMAIL=meine@addresse.de]meine@addresse.de[/EMAIL] schonmer,asl [EMAIL=eineandere@addrese.de]eineandere@addrese.de[/EMAIL] man braucht';

my @adresses = $text =~ /\s+(\S+@\S+)\s+/g;
local $, = '|';
print @adresses;


Gruß Alex
format_c
 2004-03-07 23:08
#80603 #80603
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Achso while schleife weil große Datei:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
use strict;
my @adresses = ();
while (<DATA>) {
  push @adresses,/\s+(\S+@\S+)\s+/g;
}

local $, = "\n";
print @adresses;
_ _ DATA _ _
Ok jetzt [EMAIL=jonny@example.org]jonny@example.org[/EMAIL] habenwirdoch noch die
While- [EMAIL=ralf@example.com]ralf@example.com[/EMAIL] -schleife vergessengehabtjetzt
aber noch [EMAIL=foobar@example.org]foobar@example.org[/EMAIL] schwachsinnstext


Gruß Alex\n\n

<!--EDIT|format_c|1078733928-->
[E|B]
 2004-03-07 23:49
#80604 #80604
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ich würde den E-Mail-Such-Algorithmus nochmal überdenken. Sonst ist es aber gut. ;)
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
pq
 2004-03-08 00:17
#80605 #80605
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
@fomat_c: herr lins wird sich sicherlich freuen, wenn er demnächst
hübsche werbemails an seine domain addresse.de gehen. bitte für
beispiele immer example.(com|org) oder irgendwas.example verwenden.
und wenn die email nicht von zwei leerzeichen umrahmt wird, wird
sie mit deiner regex auch nicht gefunden. email-regexes sind komplizierter
als man denkt...
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Strat
 2004-03-08 00:46
#80606 #80606
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ob eine mail-adresse gueltig ist, kannst du mit Mail::RFC822::Address herausfinden, z.B.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#! / usr/bin/perl
use warnings;
use strict;
use Mail::RFC822::Address ();

my $filename = "irgendwas.txt";
unless (open (FH, $filename)) {
  die "Error in opening '$filename': $!
";
}
else {
  while (<FH>) {
    chomp($_);
    foreach my $word ( split(/\s+/, $_) ) {
      if (&Mail::RFC822::Address::valid($word)) {
        print "$word
"; # oder mach sonst was mit $word
      } # if
    } # foreach
  } # while
  close (FH);
} # else

Nicht getestet\n\n

<!--EDIT|Strat|1078699614-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Ronnie
 2004-03-08 00:57
#80607 #80607
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
evtl. mal einen Blick auf Email::Find werfen.
format_c
 2004-03-08 09:48
#80608 #80608
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
@pq: Das war eine der Bedingungen, dass das Leerzeichen vor und nach der Addresse erhalten sind, was die RegEx um einiges simpler macht.
BTW: Was bedeutet "Herr Lins wird sich freuen?". OK example.com wäre schöner gewesen aber meine Schwachsinnaddresse wird doch höchstwahrscheinlich auch keinem schaden oder?

Gruß Alex
renee
 2004-03-08 09:56
#80609 #80609
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Herr Lins ist der Administrative Ansprechpartner für addresse.de (siehe denic).
wenn jetzt diese Seite hier von Spidern ausgelesen wird, dann erhält er als valide E-Mail Adressen Deine ganzen Beispieladressen und wird SPAM dorthin schicken...
Das meinte pq mit "Herr Lins wird sich freuen"...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
format_c
 2004-03-08 10:17
#80610 #80610
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Oh. Hoppala. Dies wusste ich nicht.
Ich werds gleich ändern. Ging ja nur ums Prinzip.

Gruß Alex
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2004-03-07 17:42.