У Барри есть решение, и, похоже, это лучшее решение, которое я могу найти где угодно, и я долго смотрел, потому что сначала обнаружил, что это решение не работает для меня в Perl.
Что я обнаружил, так это то, что небольшая поправка к этому регулярному выражению сработала. Я не уверен, причина этого нюанса, но Perl не может найти возврат каретки, когда ищет \ n, но находит возврат каретки, обозначенный в шестнадцатеричной форме /x0D.
Итак вместо:
$ string123 = ~ s / ((?: ^ [^ "] " | (?! ^)) [^ "] ? (?:" [^ "] " [ ^ "] ?) ?) ( \ n {1,}) / $ 1 / г;
Это сработало для меня:
$ string123 = ~ s / ((?: ^ [^ "] " | (?! ^)) [^ "] ? (?:" [^ "] " [ ^ "] ?) ?) ( \ x0D {1,}) / $ 1 / г;
Спасибо, Барри, большая помощь!