Use
import re
string = '''Hello world "Boston Red Sox", 'Pepperoni Pizza', 'Cheese Pizza's', beer'''
string = re.sub(r"(^|,\s*)'|'(?=\s*,)", r'\1"', string)
print([f"{x}{y}{z}" for x,y,z in re.findall(r"""'([^']*)'|"([^"]*)"|([^\s,]+)""", string)])
See Python proof.
Results: ['Hello', 'world', 'Boston Red Sox', 'Pepperoni Pizza', "Cheese Pizza's", 'beer']
EXPLANATION (REGEX #1)
--------------------------------------------------------------------------------
( group and capture to \1:
--------------------------------------------------------------------------------
^ the beginning of the string
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
, ','
--------------------------------------------------------------------------------
\s* whitespace (\n, \r, \t, \f, and " ") (0
or more times (matching the most amount
possible))
--------------------------------------------------------------------------------
) end of \1
--------------------------------------------------------------------------------
' '\''
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
' '\''
--------------------------------------------------------------------------------
(?= look ahead to see if there is:
--------------------------------------------------------------------------------
\s* whitespace (\n, \r, \t, \f, and " ") (0
or more times (matching the most amount
possible))
--------------------------------------------------------------------------------
, ','
--------------------------------------------------------------------------------
) end of look-ahead
EXPLANATION (REGEX #2)
--------------------------------------------------------------------------------
' '\''
--------------------------------------------------------------------------------
( group and capture to \1:
--------------------------------------------------------------------------------
[^']* any character except: ''' (0 or more
times (matching the most amount
possible))
--------------------------------------------------------------------------------
) end of \1
--------------------------------------------------------------------------------
' '\''
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
" '"'
--------------------------------------------------------------------------------
( group and capture to \2:
--------------------------------------------------------------------------------
[^"]* any character except: '"' (0 or more
times (matching the most amount
possible))
--------------------------------------------------------------------------------
) end of \2
--------------------------------------------------------------------------------
" '"'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
( group and capture to \3:
--------------------------------------------------------------------------------
[^\s,]+ any character except: whitespace (\n,
\r, \t, \f, and " "), ',' (1 or more
times (matching the most amount
possible))
--------------------------------------------------------------------------------
) end of \3