如何使用正则表达式删除尾随空格?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用正则表达式删除尾随空格?相关的知识,希望对你有一定的参考价值。
我想删除代码中的尾随空格和制表符,而不删除空行。
我试过了:
s+$
和:
([^
]*)s+
但他们都删除了空行。我猜s
也匹配行尾字符。
更新(2016年):
现在我通过使用Sublime的TrailingSpaces包自动执行此类代码清理,具有自定义/用户设置:
"trailing_spaces_trim_on_save": true
它突出显示尾随的空白区域,并在保存时自动修剪它们。
尝试删除尾随空格和制表符:
[ ]+$
要删除任何空白尾随空格,请使用以下命令:
|^s+
我在Atom和Xcode编辑器中测试过。我希望它适用于某个人。
要删除尾随空格同时还保留仅空白行,您希望正则表达式仅删除非空白字符后的尾随空格。因此,您需要首先检查非空白字符。这意味着非空白字符将包含在匹配中,因此您需要将其包含在替换中。
正则表达式:([^
])[ ]+$
替换:1
或$1
,取决于IDE
该平台未指定,但在C#(.NET)中它将是:
正则表达式(假设the multiline option - 以下示例使用它):
[ ]+(
?$)
替换:
$1
有关“ r?$”的说明,请参阅Regular Expression Options, Multiline Mode(MSDN)。
Code example
这将删除所有行中的所有尾随空格和所有尾随TAB:
string inputText = " Hello, World!
" +
" Some other line
" +
" The last line ";
string cleanedUpText = Regex.Replace(inputText,
@"[ ]+(
?$)", @"$1",
RegexOptions.Multiline);
正则表达式找到尾随和领先的空格:
^[ ]+|[ ]+$
如果使用Visual Studio 2012及更高版本(which uses .NET regular expressions),则可以使用以下正则表达式删除尾随空格而不删除空行
替换(?([^
])s)+(
?
)
随着$1
一些解释
您需要相当复杂的表达式的原因是字符类s
匹配空格,制表符和换行符,因此s+
将匹配仅包含空格的一组行。它无助于在此正则表达式中添加$
终止,因为它仍将匹配仅包含空格和换行符的一组行。
你可能也想知道(正如我所做的)(?([^
])s)
表达式的含义。这是一个Alternation Construct,如果它不是回车符或换行符,它实际上意味着匹配空白字符类。
交替结构通常具有真假部分,
(?( expression ) yes | no )
但在这种情况下,未指定错误部分。
要在忽略空行的同时删除尾随空格,我使用正面后视:
(?<=S)s+$
后视是从匹配中排除非空白( S)的方法。
在Java中:
String str = " hello world ";
// prints "hello world"
System.out.println(str.replaceAll("^(s+)|(s+)$", ""));
[ | ]+$
空置替换工程。 s+($)
与$1
替换也有效。至少在Visual Studio Code中......
您可以像这样简单地使用它:
var regex = /( )/g;
以上是关于如何使用正则表达式删除尾随空格?的主要内容,如果未能解决你的问题,请参考以下文章