[Talk-de] PERL REGEX?

Jacques Nietsch jacques.nietsch at gmx.de
Do Okt 16 11:59:22 UTC 2008


Am 15.10.2008, 20:47 Uhr, schrieb GS  
<gerhardschwanz at yahoo.de>:

Warum benutzt hier eigendlich keiner XML::Parser zum Parsen vom osm  
Dateien?

> Hi,
>
> ich habe:
>
>      my ($v) = ($line =~ /^.+v=[\'\"]([\/-\w\d\s\.:,\(\)]+)[\'\"]/);
>
> Ich will aber einfach nur den Text zwischen den Anführungszeichen mit  
> allem
> drum und dran. Probleme gibt es mit den dt. Umlauten.
>
> (.+) läuft nicht, warum?
>
> Tnx
>
> Gerhard

Beispielscript das alle Usernamen aus nodes und ways extrahiert:
-----------------------------------------------------------------
#!/usr/bin/perl

use XML::Parser;
my %Users = ();

sub StartHandler
{
	my ( $expat, $tag, %attr ) = @_;

	if( $tag eq 'node' or $tag eq 'way' )
	{
		$Users{ $attr{ 'user' } }++;
	}
}

my $parser = new XML::Parser(Handlers => {Start => \&StartHandler });

$parser->parsefile( 'hamburg.osm', ErrorContext => 3 );

foreach my $user ( sort keys %Users )
{
	print $user, ' - ', $Users{ $user } , "\n";
}
-----------------------------------------------------------------

So etwas kann auch xml parsen, wenn mal mehr als ein Tag in einer Zeile ist

Jacques





Mehr Informationen über die Mailingliste Talk-de