in reply to Re^4: greedy subexpression between two nongreedy ones
in thread greedy subexpression between two nongreedy ones

s#,(?:(?:(?!,).)*(cd))?(?:(?!,).)*,#=@{[$1 // '']}=#

Are there any more requirements you're not telling us?