Thread Regex vcf-Liste (6 answers)
Opened by catweasel at 2008-09-17 15:43

catweasel
 2008-09-17 15:43
#114735 #114735
User since
2008-08-29
13 Artikel
BenutzerIn
[default_avatar]
Hi,

mit dieser Regex hole ich mir Namen und Handynummer aus einer vcf-Datei. Nach etwas "trail and error" funktioniert es, aber trotzdem möchte ich fragen, ob man diese Regex besser, schöner, kürzer oder sicherer schreiben kann.

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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#! /usr/bin/perl -w
use strict;

open ( my $fh, '<', '/home/mm/Liste.vcf' ) or die "$!";
local $/;
my $file = <$fh>;
close ( $fh );


my $count = 0;
my%hash = ();
while ( $file =~ m/BEGIN:VCARD.*?\s+N:([^;]*;[^;]*;[^;]*;[^;]*;[^;]*?)\s+.*?TEL;TYPE=CELL[^:]*:(\+?\d+).*?END:VCARD/gs ) {
        my $key = $1;
        my $value = $2;
        my @namen = split ( /;/, $key );
                $key = "$namen[1] $namen[0]" if $namen[1] and $namen[0];
                $key = $namen[0] if ! $namen[1];
                $key = $namen[1] if ! $namen[0];
        $hash{$key} = $value if $key && $value;
}



foreach ( keys %hash ) {
        print $_, ' ',  '-' x ( 30 - length ( $_ ) ), ' ', $hash{$_}, "\n";
}

__DATA__
BEGIN:VCARD
VERSION:3.0
REV:2008-09-16T15:10:40Z
X-EVOLUTION-FILE-AS:Nachname\, Vorname
FN:Vorname Nachname
N:Nachname;Vorname;;;
TEL;TYPE=VOICE,OTHER:0123456789
TEL;TYPE=CELL,OTHER:0123456789
UID:pas-id-10AAAA1000000001
END:VCARD

BEGIN:VCARD
...

View full thread Regex vcf-Liste