"Eurospace Szarindar" <[EMAIL PROTECTED]> wrote in
message news:[EMAIL PROTECTED]
> Hi,
>
> I tried to write a script to extrat data from the given DATA but I can
find
> the right regular expression to do that.

Hi Szarindar,

Firstly why are you using this format and trying to parse it yourself? If
you've got control of your data, use something like Text::CSV. The guy who
maintains your code will thank you for it.

otherwise, this seems to work (you'll have to print with $2 though)...

/(['"])(((''|"")|[^'"])*?)\1(\s|$)/g

HTH

Rob Anderson

> RULE: I need to catch everything between quotes (single or double) and if
> inside exists a repeated quote (single or double) it is not seen as end of
> the match.
>
> #!/usr/bin/perl -w
>
> use strict;
>
> my $begin = '[\",\']'; #
> my $end = '[\",\']'; #
> my $pattern = "${begin}(.*?)${end}"
>
> while (<DATA>) {
> print "line content $_ \n"
> while ( /$pattern/g ){
> print "line $. found : $1\n"
> }
>
> }
>
>
> __DATA__
> ' data11 '' data12' 'data13'
> " data21 "" data22" "data23"
> " data31 '' data32" "" "data34"
> "data41" "data42" "data43" "__--data44"
> """"  "''" '""' ''''
>
>
>
> Result should be
> 1:( data11 '' data12)
> 2:(data13)
> 3:( data21 "" data22)
> 4:(data23)
> 5:(data31 '' data32)
> 6:()
> 7:(data34)
> 8:(data41)
> 9:(data42)
> 10:(data43)
> 11:(__--data44)
> 12:("")
> 13:('')
> 14:("")
> 15:('')
>
>
> It could be resolved by replacing the \"{2} or \'{2} by a "[EMAIL PROTECTED]" and
> alterwards relacing it back to the previous value but it is not very
smart.
>
>
>
> great thanks in advance
>
> Michel



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to