我想从文本文件中删除每一行的尾随空格,保持换行符不变。为此,我正在使用 Visual Studio 2012 的 Regex 功能。
当我尝试查找\s*\r?\n
并替换\r\n
它时,它也会删除所有空行,这是意料之外的。
有什么我想念的吗?
我想从文本文件中删除每一行的尾随空格,保持换行符不变。为此,我正在使用 Visual Studio 2012 的 Regex 功能。
当我尝试查找\s*\r?\n
并替换\r\n
它时,它也会删除所有空行,这是意料之外的。
有什么我想念的吗?
设置减法来拯救!
[\s-[\n]]+\n
...或除( )换行符( ) 之外的任何空白字符( \s
) 。通常,被视为范围运算符或文字连字符(取决于其在字符类中的位置),并被视为文字括号。但是如果连字符后面跟一个看起来像字符类的东西,它就变成了一个集合减法运算符。-
[\n]
-
[
ref:正则表达式中的字符类
如果您不想替换它们,为什么要尝试匹配回车符\r
和换行符,然后将所有内容替换为.\n
\r\n
而是仅匹配空格和制表符以及您想要剥离的任何其他空白字符,并将其替换为空字符串,如下所示:
[ \t]*$
这将匹配每行末尾的零个或多个空格或制表符,并将它们替换为空字符串。
注意:您必须使用多行模式,以便$
在每行的末尾匹配。
如果您无法在 VS 中激活多行模式,那么您可以使用另一个不需要的表达式:
[ \t]*(?=\r?\n)
这将匹配零个或多个制表符和空格,只要它们后跟可选的回车符,然后是换行符,或者换句话说,只要它们位于行尾。
我知道这很旧,但我使用 Visual Studio 的正则表达式搜索并替换此字符串(无引号)“+\r?$”并将替换字段留空,然后全部替换。这保留了换行符并适用于 VS 正则表达式风格。