Reputation: 4268
I want to remove trailing white spaces and tabs from my code without removing empty lines.
I tried:
\s+$
and:
([^\n]*)\s+\r\n
But they all removed empty lines too. I guess \s
matches end-of-line characters too.
UPDATE (2016):
Nowadays I automate such code cleaning by using Sublime's TrailingSpaces package, with custom/user setting:
"trailing_spaces_trim_on_save": true
It highlights trailing white spaces and automatically trims them on save.
Upvotes: 96
Views: 173195
Reputation: 159
If you want to remove trailing whitespace from lines that have some text, but not just blank lines, here is regex to find: (\S+)(\s+)$
and replace with $1
. It finds trailing text as first group, then trailing whitespace just after text as second group. Then replaces both groups by just the first group.
Upvotes: 1
Reputation: 1
Strangely, I could not get the /[\t ]+$/m
to work in PHP. I tried variants of the other answers here, but still failed.
So, I went with this replacement instead:
<?php
$contents = preg_replace('/[\t ]+(\v)/', '$1', $contents);
Upvotes: 0
Reputation: 624
[ |\t]+$
with an empty replace works.
\s+($)
with a $1
replace also works, at least in Visual Studio Code...
Upvotes: 3
Reputation: 2562
To remove any blank trailing spaces use this:
\n|^\s+\n
I tested in the Atom and Xcode editors.
Upvotes: 0
Reputation: 31593
The platform is not specified, but in C# (.NET) it would be:
Regular expression (presumes the multiline option - the example below uses it):
[ \t]+(\r?$)
Replacement:
$1
For an explanation of "\r?$", see Regular Expression Options, Multiline Mode (MSDN).
This will remove all trailing spaces and all trailing TABs in all lines:
string inputText = " Hello, World! \r\n" +
" Some other line\r\n" +
" The last line ";
string cleanedUpText = Regex.Replace(inputText,
@"[ \t]+(\r?$)", @"$1",
RegexOptions.Multiline);
Upvotes: 19
Reputation: 1516
You can simply use it like this:
var regex = /( )/g;
Sample: click here
Upvotes: -4
Reputation: 1492
If using Visual Studio 2012 and later (which uses .NET regular expressions), you can remove trailing whitespace without removing blank lines by using the following regex
Replace (?([^\r\n])\s)+(\r?\n)
With $1
Some explanation
The reason you need the rather complicated expression is that the character class \s
matches spaces, tabs and newline characters, so \s+
will match a group of lines containing only whitespace. It doesn't help adding a $
termination to this regex, because this will still match a group of lines containing only whitespace and newline characters.
You may also want to know (as I did) exactly what the (?([^\r\n])\s)
expression means. This is an Alternation Construct, which effectively means match to the whitespace character class if it is not a carriage return or linefeed.
Alternation constructs normally have a true and false part,
(?( expression ) yes | no )
but in this case the false part is not specified.
Upvotes: 3
Reputation: 1
In Java:
String str = " hello world ";
// prints "hello world"
System.out.println(str.replaceAll("^(\\s+)|(\\s+)$", ""));
Upvotes: -1
Reputation: 1379
To remove trailing whitespace while also preserving whitespace-only lines, you want the regex to only remove trailing whitespace after non-whitespace characters. So you need to first check for a non-whitespace character. This means that the non-whitespace character will be included in the match, so you need to include it in the replacement.
Regex: ([^ \t\r\n])[ \t]+$
Replacement: \1
or $1
, depending on the IDE
Upvotes: 39
Reputation: 1032
To remove trailing white space while ignoring empty lines I use positive look-behind:
(?<=\S)\s+$
The look-behind is the way go to exclude the non-whitespace (\S) from the match.
Upvotes: 0