我想删除代码中的尾随空格和制表符 删除空行。
我试过了:
\s+$
和
([^\n]*)\s+\r\n
但他们都删除了空行。我猜\s
也匹配行尾字符。
更新(2016):
现在我使用Sublime的TrailingSpaces包自动执行此类代码清理,并使用自定义/用户设置:
"trailing_spaces_trim_on_save": true
它突出显示尾随空格并在保存时自动修剪它们。
答案 0 :(得分:107)
尝试删除尾随空格和标签:
[ \t]+$
答案 1 :(得分:28)
要删除尾随空格同时还保留仅空白行,您希望正则表达式仅删除非空白字符后的尾随空格。因此,您需要首先检查非空白字符。这意味着非空格字符将包含在匹配中,因此您需要将其包含在替换中。
正则表达式: ([^ \t\r\n])[ \t]+$
替换 \1
或$1
,具体取决于IDE
答案 2 :(得分:9)
未指定平台,但在C#(.NET)中,它将是:
正则表达式(假设the multiline option - 以下示例使用它):
[ \t]+(\r?$)
替换:
$1
有关“\ r?$”的说明,请参阅 Regular Expression Options, Multiline Mode (MSDN)。
这将删除所有行中的所有尾随空格和所有尾随TAB:
string inputText = " Hello, World! \r\n" +
" Some other line\r\n" +
" The last line ";
string cleanedUpText = Regex.Replace(inputText,
@"[ \t]+(\r?$)", @"$1",
RegexOptions.Multiline);
答案 3 :(得分:1)
正则表达式查找尾随和前导空格:
^[ \t]+|[ \t]+$
答案 4 :(得分:1)
如果使用Visual Studio 2012及更高版本(which uses .NET regular expressions),则可以使用以下正则表达式删除尾部空白而无需删除空白行
替换(?([^\r\n])\s)+(\r?\n)
使用$1
一些解释
您需要相当复杂的表达式的原因是,字符类\s
匹配空格,制表符和换行符,因此\s+
将匹配仅包含空格的一组行。向此正则表达式添加$
终止符是无济于事的,因为这仍将匹配仅包含空格和换行符的一组行。
您可能还想(像我一样)确切地知道(?([^\r\n])\s)
表达式的含义。这是Alternation Construct,如果不是回车符或换行符,则表示与空白字符类匹配。
Alternation构造通常包含真假部分,
(?( expression ) yes | no )
但在这种情况下,未指定错误部分。
答案 5 :(得分:0)
要删除尾随空格而忽略空行我使用正面后视:
(?<=\S)\s+$
后视是从匹配中排除非空格(\ S)的方法。
答案 6 :(得分:0)
[ |\t]+$
(带有空替换)。 \s+($)
和$1
替换也可以。
至少在Visual Studio Code中...
答案 7 :(得分:0)
要删除任何空白的尾随空格,请执行以下操作:
\n|^\s+\n
我在Atom和Xcode编辑器中进行了测试。我希望它曾经有人。
答案 8 :(得分:-1)
在Java中:
String str = " hello world ";
// prints "hello world"
System.out.println(str.replaceAll("^(\\s+)|(\\s+)$", ""));
答案 9 :(得分:-1)