Если вы используете Visual Studio 2012 и более поздние версии (, в котором используются регулярные выражения .NET ), вы можете удалить конечные пробелы, не удаляя пустые строки, используя следующее регулярное выражение
Заменить (?([^\r\n])\s)+(\r?\n)
С $1
Некоторое объяснение
Причина, по которой вам нужно довольно сложное выражение, заключается в том, что класс символов \s
соответствует пробелам, символам табуляции и символам новой строки, поэтому \s+
будет соответствовать группе строк, содержащей только пробелы. Это не помогает добавить $
завершение к этому регулярному выражению, потому что оно все равно будет соответствовать группе строк, содержащей только пробел и символы новой строки.
Вы также можете узнать (как я) точно, что означает выражение (?([^\r\n])\s)
. Это Alternation Construct , который фактически означает соответствие классу пробельных символов, если это не возврат каретки или перевод строки.
Чередующиеся конструкции обычно имеют истинную и ложную части,
(?( expression ) yes | no )
но в этом случае ложная часть не указана.