mattford63 has asked for the wisdom of the Perl Monks concerning the following question:
Be foul means an evily generated report that I have no control over must be parsed; it takes the form:
"a value with ""quotes"" in"
As the report generator encloses text within double quotes, if it encounters any double quotes in text it's enclosing, it simply doubles them up. But this leaves me very stuck when trying to pull the data back out between the single quotes (via a regex tokenizer). The regex spirit is not lifting her filthy skirt for me tonight. How can I return everything between the single "double" quotes. i.e., make
$1='a value with ""quotes"" in'
I toyed around with look aheads/behinds but don't really get it. Maybe it's easier than I think it is and I've just confused.
my $s = qr/"(.*?)"(?!")\s*/xms;
Don't look at the above too long it's just my latest desperate attempt.
Is it possible in the general sense? Any other nice solutions to the problem (other than regex)?
These cases should work:
""
"a"""""
"a""b""c""d""f"
Thanks for any help!
Matt.
|
---|