Phoenix.pm: Regex question

tcpeter at mindspring.com tcpeter at mindspring.com
Fri Feb 2 21:35:56 CST 2001


On Fri, 2 Feb 2001, Doug Miles wrote:

> This is probably something obvious, 

I don't think so...

> but I don't have my regex book with
> me, and can't seem to figure it out.  I'm trying to parse space
> delimited information, somewhat like the UNIX command line.  Whitespace
> delimits parameters, but parameters can containg whitespace if
> surrounded by quotes.  Here's the code:
> 
> #!/usr/bin/perl
> 
> my $string = qq(DailyNAV "Class C" nav);
> 
> my @tokens = $string =~ /(\S+)/g;
> my @tokens = $string =~ /"([^"]+)"/g;


> my @tokens = $string =~ /"([^"]+)"|(\S+)/g;
> print join('|', @tokens) . "\n";
> 
> here is the output:
> 
> DailyNAV|"Class|C"|nav
> Class C
> |DailyNAV|Class C|||nav


Doug,
I've been sorta lurking here a long time reading, but this is the first time I've contributed.  This seems to work.  It's really the same as one of yours, with just a bit of tweaking.

#!/usr/bin/perl

my $string = qq(DailyNAV "Class C" nav);
print join('|', split(/\s?"([^"]+)"\s?/, $string))."\n";




More information about the Phoenix-pm mailing list