擅长:python、mysql、java
<p>我认为这是可行的:</p>
<pre><code>import re
regexc = re.compile(r"(?:^|[^\\])'(([^\\']|\\'|\\\\)*)'")
def check(test, base, target):
match = regexc.search(base)
assert match is not None, test+": regex didn't match for "+base
assert match.group(1) == target, test+": "+target+" not found in "+base
print "test %s passed"%test
check("Empty","''","")
check("single escape1", r""" Example: 'Foo \' Bar' End. """,r"Foo \' Bar")
check("single escape2", r"""'\''""",r"\'")
check("double escape",r""" Example2: 'Foo \\' End. """,r"Foo \\")
check("First quote escaped",r"not matched\''a'","a")
check("First quote escaped beginning",r"\''a'","a")
</code></pre>
<p>正则表达式<code>r"(?:^|[^\\])'(([^\\']|\\'|\\\\)*)'"</code>只向前匹配字符串中所需的内容:</p>
<ol>
<li>不是反斜杠或引号的字符。</li>
<li>转义引号</li>
<li>转义反斜杠</li>
</ol>
<p>编辑:</p>
<p>在前面添加额外的正则表达式以检查转义的第一个引号。</p>