This situation is frustrating. Technically speaking, the CSV file you describe is within MicroSoft's CSV spec - the double-quotes escape the comma, so it's not considered a separator. However, there's a lot of programs out there that don't honor any method of saying the comma isn't a value separator, or don't honor that one.
If you only have a single double-quoted term, it's easier to deal with, because you can just deal with any separator between those quotes.
This just looks for a double quote, followed by anything that's not a comma or a double quote, which it puts into group 1, and then a comma, followed by whatever ending with a double quote, which goes in group 2. The comma wasn't included in either group, so we just replace with the groups and the comma is gone. I'm not using the g modifier there because that case was defined to be only one double-quoted term, and since it's matching both of the double-quotes around that term, it's not going to work more than once per line. If you can have multiple double-quoted sections, it can be much harder. Unfortunately, to make sure we're not thwacking commas that really are separators, we're going to have to start each match at the beginning of the line, and this will only work for CSVs which do not have quoted line endings (another thing that's allowed and annoying in MicroSoft's spec. At least, annoying from the perspective of someone trying to parse it with simple tools.)
Like the first one, we simply put everything we want, up to the close double quote after our unwanted character, into two groups, and concatenate them, without including what we don't want. But this time, the first group is preceded with an anchored expression that matches any number of elements that either aren't enclosed in double quotes or are enclosed in double quotes but don't contain any commas, so we're "fixing" the first value with the issue, most specifically the first comma from that value. The 'any number of values without the pattern' is handled using another group block, so instead of replacing with
\1\2, we replace with
Just to talk about that portion specifically, namely
\([^,"]*,\|"[^,"]*",\)*, this includes an
\| in the middle, which says that it matches if it's either the
[^,"]*, on the left or the
"[^,"]*", on the right. The
* after the end of the group repeats the whole grouping regex as many times as is necessary.
This isn't a particularly fast regular expression, and it needs to be re-run as many times as the maximum number of double-quoted commas on one line. But it works within the context of the environment you're asking for it to. It would probably be a better answer to tell whatever program is having the problem with these CSVs how to properly handle quotes, or to turn the other commas into some character that's not already in the file, such as possibly a tab, so that the file could be parsed using that other character as a separator instead, because that's something that would be easier to do with a single pass.
I feel it's probably important to note that by making the change you're looking for to name fields, you're changing the semantic meaning of those names. Based on your username, I would guess you understand this particular thing, but this answer is also for anyone else who's looking into handling this situations, so I felt important to say that it's usually a better approach to replace the separator with a different separator, such as
;, which isn't otherwise used within the data, but could be converted back to a comma when you're only dealing with that one value later on.