【问题标题】:Notepad++ replace lines containing only spaces and/or tabsNotepad++ 替换仅包含空格和/或制表符的行
【发布时间】:2016-08-26 08:25:30
【问题描述】:

如何将代码中仅包含空格和/或制表符的所有行替换为空行?

例子:

for(var l=0,leng=one.codes.length;l<leng;l++){
******
    var oneCode = one.codes[l];
    var temp = new Object();
******
    temp.code = oneCode.c;
******
    if(two >= 1000){
        var alex = "";
        var bob = 0;
    }
******
}

* 符号是空格和制表符。我希望在不更改其余代码格式的情况下删除它们。我希望这些行保持空白但不包含任何字符。

【问题讨论】:

  • 您接受的答案^\s+$ 将删除后续/相邻的空白行。 Mavros,我的印象是你想保留换行符,不是吗?
  • @MavrosGatos 您是否查看过 Edit-->BlankOperations 菜单项下的可用选项?我猜那里有一些东西可以做你想做的事。

标签: regex notepad++


【解决方案1】:

你可以使用

^\h+$

地点:

  • ^ - 行首
  • \h+ - 一个或多个水平空白符号
  • $ - 行尾

注意:要同时删除换行符,请在模式末尾添加 \R* - 零个或多个换行符。

                     VVVV

【讨论】:

  • 不错的答案,但不完全是我需要的。我不想完全删除空白行,只删除其中的空格符号。
  • 然后删除\R*。这将保持行号不变,但会删除空白行中的所有水平空格。使用^\h+$
【解决方案2】:
  1. Ctrl + H 打开替换标签
  2. 查找内容文本字段中输入^\s+$
  3. 替换为文本字段为空
  4. 搜索模式框架中选择正则表达式
  5. 点击全部替换按钮(您可能需要点击几次查找按钮来检查正则表达式是否正确)

【讨论】:

  • 这将删除后续/相邻的空白行。 Mavros,我的印象是你想保留换行符,不是吗?
  • @Wiktor Stribiżew:你说得对,它实际上只用一个替换了多个空行......所以它应该使用 \h 而不是 \s (在你回答之前我不知道 \h,谢谢; ) ) 答案已编辑
  • 嗯,这只是意味着我的回答应该被接受。现在你的答案和我的完全一样。
  • @WiktorStribiżew:有一点你是对的,我们现在的答案是一样的。但我认为你修改了你的,就像我修改了我的一样。我不知道谁应该被接受,我不在乎,我不是为了积分。请随时联系 MavrosGatos 要求他解决这种残酷的不公正现象 :)
  • 你在说什么?我比你早 7 分钟修改了答案。在您将答案与我的答案重复后 1 分钟,我才添加了屏幕截图。见my answer history。我让 OP 良心重新考虑接受的答案选择。
【解决方案3】:

您可以使用以下查找和替换:

查找:

(?![^\s]).(\r?\n)

替换:

$1

此正则表达式使用负前瞻,它将断言在该行中的每个点,后面的字符都是空格(包括空格和制表符)。

正则表达式的\r?\n 结尾将匹配\r\n,这是Windows 行结尾,或者只是\n,这是Unix 行结尾。这是在$1 中捕获的,然后用作替换,因为您想保留该行,同时删除所有空格。

【讨论】:

    猜你喜欢
    • 2015-06-03
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 2011-03-08
    • 2017-11-19
    • 1970-01-01
    相关资源
    最近更新 更多