Hallo,
ich habe diese Frage schon in einem anderen Forum gestellt, nur leider konnte mir keiner helfen. Vielleicht könnt ihr mir weiterhelfen!? Muss dies unbedingt lösen. Die Quelldatei kann leider nicht geändert werden und muss so übernommen werden!
Meine Frage:
ich komme einfach nicht weiter und weiß auch nicht mehr wie ich diese Problem lösen kann. Und zwar:
Ich habe eine Zeile:
Test1 Test2 Test3 "Test 4" Test5
Jetzt sollen mir alle Wörter rausgefiltert werden. Zwischen den Wörtern stehen Leerzeichen! Das Test 4 erhalte ich durch:
=~ /"(.+?)"/g
und immer bei Leerzeichen trennen erhalte ich durch:
=~ /"(\s+)"/g
Nur wie kann ich die beiden kombinieren und dann bei =~ /"(\s+)"/g auch die Wörter mit ".." ausschließen.
Könnt ihr mir weiterhelfen?
Vielen Dank
User since
2003-08-04
14371
Artikel
ModeratorIn
Das hier ist eine Lösung:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my $string = 'Test1 Test2 Test3 "Test 4" Test5';
my @words = grep{ defined $_ and $_ ne q{} }($string =~ /\s*"(.*?)"\s*|\s*(\S*)\s*/g);
print Dumper(\@words);