Это тот, который я всегда использовал.
В отличие от принятого решения, оно будет переноситься ДО длины переноса (в данном случае 75 символов), если только нет действительно длинной строки (например, URL), в этом случае она просто поместит эту строку в свою собственную линии, а не ломать ее.
s/(?=.{70,})(.{0,70}\n?)( )/\1\2\n /g
Эта вторая форма обрабатывает все окончания строк: Mac \ r, Unix \ n, Windows \ r \ n и Teletype \ n \ r, но какая из них используется в качестве замены, все еще зависит от того, что вы положили в предложение замены : Я использовал \ n.
s/(?=.{70,})(.{0,70}(?:\r\n?|\n\r?)?)( )/\1\2\n /g
Обе версии также делают отступ для всех перенесенных строк после первой на один пробел: уберите пробел перед последней / g, если вы этого не хотите, но я обычно нахожу это лучше.