如何使用正则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)的方法。