如何使用正则expression式去除尾随空格?

我想从我的代码中删除尾随的空格和制表符而不删除空行。

我试过了:

\s+$ 

和:

 ([^\n]*)\s+\r\n 

但他们也都删除了空行。 我想\s匹配行尾字符。


更新(2016):

现在,我使用Sublime的TrailingSpaces软件包自定义/用户设置来自动清除代码:

 "trailing_spaces_trim_on_save": true 

它突出显示尾随的空格,并在保存时自动修剪它们。

尝试删除尾随空格和制表符:

 [ \t]+$ 

要删除尾随的空白,同时还保留空白的行,你希望正则expression式只删除非空白字符后面的空白。 所以你需要首先检查一个非空白字符。 这意味着非空白字符将被包含在匹配中,所以您需要将其包含在replace中。

正则expression式: ([^ \t\r\n])[ \t]+$

replace: \1

该平台没有指定,但在C#(. NET )中,它将是:

正则expression式 (假设多行选项 – 下面的例子使用它):

  [ \t]+(\r?$) 

replace

  $1 

有关“\ r?$”的说明,请参阅正则expression式选项,多行模式 (MSDN)。

完整的代码示例

这将删除所有行中的所有尾随空格和所有尾随TAB:

 string cleanedUpText = Regex.Replace(inputText, @"[ \t]+(\r?$)", @"$1", RegexOptions.Multiline); 

要删除尾随白色空间,而忽略空行我使用积极的后顾之忧:

 (?<=\S)\s+$ 

look-behind是从匹配中排除非空白(\ S)的方法。