Ответ 1
Здесь все, что вам нужно сделать:
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'
Как указано Li-aung Yip: (я почти цитирую)
.+?
является "неживой" версией .+
. Это делает регулярное выражение совпадающим с наименьшим количеством символов, которое оно может, вместо большинства символов, которые он может. Жадная версия .+
даст строку 1" or "String 2" or "String 3
; не жадная версия .+?
'String 1, String 2, String3'
Кроме того (Johan говорит снова), если вы хотите принять пустые строки, измените .+
на .*
. Звезда означает ноль или больше - плюс означает, по крайней мере, один.