Rob Dixon wrote:
> Jonathan Lang wrote:
> > I'm trying to devise a regex that matches from the first double-quote
> > character found to the next double-quote character that isn't part of
> > a pair; but for some reason, I'm having no luck.  Here's what I tried:
> >
> >   /"(.*?)"(?!")/
> >
> > Sample text:
> >
> >   author: "Jonathan ""Dataweaver"" Lang" key=val
> >
> > What I'm getting for $1 in the first match:
> >
> >   Jonathan "
> >
> > What I'm looking for:
> >
> >   Jonathan ""Dataweaver"" Lang
> >
> > What did I miss, and how can I most efficiently perform the desired match?
>
> Your regex looks for the first double-quote and then captures everything after
> that up to the first subsequent double-quote that isn't followed immediately 
> by
> another one. The second quote of the pair before 'Dataweaver' matches this
> criterion so your regex captures up to the character before it.
>
> This:
>
>   $str =~ /"((?:.*?"")*.*?)"/;
>
> should do what you want. After finding the first double-quote it captures all
> following sequences ending in a pair of double quotes, plus anything after
> those up to the closing quote.

Ah.  I had tried /"((.*?"")*.*?)"/ and hadn't gotten it to work; it
never occurred to me to try the non-capturing group instead.

Thank you.

-- 
Jonathan "Dataweaver" Lang

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to