I did come up with a solution that isn't regex oriented, but I think it will work for all cases. It could probably be tightened a bit, although the regex way may be better in the end.
#!/usr/bin/perl -w use strict; my $temp=''; my $flag=0; print "Name\t\tPrependition\t\tWhatever\n"; while (<DATA>) { chomp; my @line = split('\s+',$_); for my $i(0..$#line){ if ((length($line[$i])<4)&& ($line[$i] =~ m/[A-Z][A-Z]+/o)){ $temp .= $line[$i]; $line[$i] = '*' if +$flag; $line[$i] = '' if ! +$flag; $flag = 1; $temp .= ' '; } } $flag = 0; for my $i(0..$#line){ print "$temp\t" if $line[$i] eq ''; print "$line[$i]\t" unless $line[$i] eq '*';; } print "\n"; $temp = ''; } __DATA__ WINTER DE <A240> ZANDEN VAN DER ŤAť JENSEN 230 WOODHEAD <D> BRINK 130,- HEYDIER DEN <240> SMITSER (4X115PJ) LINDEN VAN DER MOTEL GOLDEN LEEUW <A225>
Hope that helps!
Some people fall from grace. I prefer a running start...
In reply to Re: Can this be parsed ?
by Popcorn Dave
in thread Can this be parsed ?
by ChOas
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |