删除visual studio 2012中的尾随空格

时间:2013-09-13 06:39:14

标签: regex visual-studio-2012

我想从文本文件中删除每行的尾随空格,保持换行符不变。我正在使用Visual Studio 2012的Regex功能。

当我试图找到\s*\r?\n并替换为\r\n时,它也会删除所有空行,这是不期望的。

我有什么遗失的吗?

3 个答案:

答案 0 :(得分:6)

将减法设置为救援!

[\s-[\n]]+\n

...或任何空格字符\s,但-换行({{ 1}})。通常,[\n]被视为范围运算符或文字连字符(取决于它在字符类中的位置),-被视为文字括号。但是如果连字符后跟一个看起来像字符类的东西,它就变成了一个set减法运算符。

参考:Character Classes in Regular Expressions

答案 1 :(得分:3)

如果您不想替换它们,然后用\r替换所有内容,为什么要尝试匹配回车\n和换行符\r\n

而是仅匹配空格和制表符以及要删除的任何其他空白字符,并将其替换为空字符串,如下所示:

[ \t]*$

这将匹配每行末尾的零个或多个空格或制表符,并用空字符串替换它们。

注意:您必须使用多行模式,因此$匹配每行的末尾。

如果你无法在VS中激活多线模式,那么你可以使用另一个不需要的表达式:

[ \t]*(?=\r?\n)

这将匹配零个或多个制表符和空格,只要它们后面跟一个可选的回车符然后换行符,换句话说,只要它们位于行尾。

答案 2 :(得分:0)

我知道这是旧的,但我使用搜索并用此字符串替换Visual Studio的正则表达式(没有引号) “+ \ r?$”并将替换字段留空,然后只需替换所有。这样可以保留换行符并适用于VS正则表达式。