If you were trying to match quotes in text taken from a MS Office document, then that would explain the trouble you were having. By default, MS converts " and ' into "Smart Quotes".

A similar problem for \q is it would need to be locale dependant since different languages use different quoting schemes.

/\".+\"/

seems to work at first, and it will work for very simple cases, but it would probably not do what you wanted for the expresssion

ABC "DEF" GHI "JKL" MNO

where it would match "DEF" GHI "JKL". To match "DEF" and "JKL" seperately, you would need something like:

/\".+?\"/

We probably should use .*? instead of .+? to handle things like "". But, if you are dealing with code, none of these solutions handles things like "AB\"C". There is a common boilerplate regex for this, but at this point you may want to take a look at the documenation for Text::Balanced which is a core module for 5.8 (and probably earlier). If provides matching solutions for all sorts of common problems like this.

Ted

PS: It is quite possible you already new all of this and had left it out in the interest of brevity. :-)


In reply to Re: \q quote-matching operator by TedYoung
in thread \q quote-matching operator by PhilHibbs

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.