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/