擅长:python、mysql、java
<pre><code>>>> s = r'a=foo, b=bar, c="foo, bar", d=false, e="false", f="foo\", bar"'
>>> re.findall(r'(?:[^\s,"]|"(?:\\.|[^"])*")+', s)
['a=foo', 'b=bar', 'c="foo, bar"', 'd=false', 'e="false"', 'f="foo\\", bar"']
</code></pre>
<ol>
<li>regex模式<code>"[^"]*"</code>匹配一个简单的带引号的字符串。</li>
<li><code>"(?:\\.|[^"])*"</code>匹配带引号的字符串并跳过转义引号,因为<code>\\.</code>使用两个字符:反斜杠和任何字符。</li>
<li><code>[^\s,"]</code>匹配非分隔符。</li>
<li>组合模式2和模式3在<code>(?: | )+</code>中匹配一系列非分隔符和带引号的字符串,这是所需的结果。</li>
</ol>