Вот все, что вам нужно сделать:
def doit(text):
import re
matches=re.findall(r'\"(.+?)\"',text)
# matches is now ['String 1', 'String 2', 'String3']
return ",".join(matches)
doit('Regex should return "String 1" or "String 2" or "String3" ')
# result:
'String 1,String 2,String3'
Как отметил Ли-Аунг Ип: (я почти цитирую)
.+?
- это «нежадная» версия .+
. Это заставляет регулярное выражение соответствовать наименьшему количеству символов, которое он может, вместо наибольшего количества символов, которое он может. Жадная версия .+
выдаст строку 1" or "String 2" or "String 3
; нежадная версия .+?
'String 1, String 2, String3'
Кроме того (Йохан говорит снова), если вы хотите принять пустые строки, измените .+
на .*
. Звезда означает ноль или более - плюс означает, по крайней мере, один.