Question: I'm looking for a code in python using regex that can perform something like this

Input: `Regex should return "String 1" or "String 2" or "String3"` 

Output: `String 1,String2,String3`

I tried `r'"*"'`

Answer: 
The highly up-voted answer doesn't account for the possibility that the double-quoted string might contain one or more double-quote characters (properly escaped, of course). To handle this situation, the regex needs to accumulate characters one-by-one with a *positive lookahead assertion* stating that the current character is not a double-quote character that is not preceded by a backslash (which requires a *negative lookbehind assertion*):

```
"(?:(?:(?!(?<!\\)").)*)"

```

[See Regex Demo](https://regex101.com/r/Ls5VTU/1/)

```
import re
import ast

def doit(text):
    matches=re.findall(r'"(?:(?:(?!(?<!\\)").)*)"',text)
    for match in matches:
        print(match, '=>', ast.literal_eval(match))

doit('Regex should return "String 1" or "String 2" or "String3" and "\\"double quoted string\\"" ')

```

Prints:

```
"String 1" => String 1
"String 2" => String 2
"String3" => String3
"\"double quoted string\"" => "double quoted string"

```
For me the only regex that ever worked right for all the cases of quoted strings with possibly escaped quotes inside of them was:

```
regex=r"""(['"])(?:\\\\|\\\1|[^\1])*?\1"""

```

This will not fail even if the quoted string ends with an escaped backslash.