cseber...@gmail.com wrote:

> Why this regex for string literals
> can't handle escaped quotes?.... '"(\\.|[^"])*"'
> 
> See this...
> 
>>>> string_re = '"(\\.|[^"])*"'
> 
>>>> re.match(string_re, '"aaaa"')
> <_sre.SRE_Match object; span=(0, 6), match='"aaaa"'>
> 
>>>> re.match(string_re, '"aa\"aa"')
> <_sre.SRE_Match object; span=(0, 4), match='"aa"'>
> 
> How make the last match be the entire string '"aa\"aa"' ?
> 
> cs

You did not escape the string literals:

>>> '"aa\"aa"' == '"aa"aa"'
True

Once you fix this for both the regex and the search string you get the 
expected match:

>>> re.match('"(\\\\.|[^"])*"', '"aa\\"aa"')
<_sre.SRE_Match object; span=(0, 8), match='"aa\\"aa"'>

Raw strings make this a bit easier to read:

>>> re.match(r'"(\\.|[^"])*"', r'"aa\"aa"')
<_sre.SRE_Match object; span=(0, 8), match='"aa\\"aa"'>


-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to