NB: for testing regular expressions I use http://gskinner.com/RegExr/ , which is very useful.
I do not think that you can write one expression that replaces the number of new lines undefined. However, you can write an expression to replace one or more, and either run it many times, or write it to deal with the maximum number of new lines that you will have in one cited section.
First, you need single-line mode so that your expression matches the entire input line instead of line by line. Put this at the beginning of the expression to include it:
(?s)
Then you want the look-behind expression to match the starting carriage:
(?<=")
And look ahead to match the end quote:
(?=")
Now an expression to match some text, then a new line, then some text:
([^"\r]*)\r?([^"\r]*)
Note that there are two capture groups for bits of text around a new line, so you can include this text in a replace expression. This will match text that has only one new line in quotation marks. To expand this to two lines of newline, simply add another optional newline and optional following text:
(?s)(?<=")([^"\r]*)\r?([^"\r]*)\r?([^"\r]*)(?=")
You can expand it to fit as many lines as you think. Not perfect, but maybe enough. Or, if you can run the expression repeatedly in the text, just replace it one at a time.
Leaving your expression like this:
r.Replace("(?s)(?<=")([^"\r]*)\r?([^"\r]*)", "$1 $2")
(This is not entirely correct, as it will add a space after the text, even if the second group does not match ... but this is the beginning)