【发布时间】:2011-03-03 20:10:19
【问题描述】:
使用 Notepad++,如何删除所有以 # 或 ; 开头的行?
【问题讨论】:
-
选择所有以#开头的行:
#.*
使用 Notepad++,如何删除所有以 # 或 ; 开头的行?
【问题讨论】:
#.*
查找:
^[#;].*
什么都没有。 ^ 表示一行的开头,[#;] 是一个匹配# 或; 的字符类,.* 匹配行中的任何其他内容。
在 6.0 之前的 Notepad++ 版本中,由于其正则表达式引擎的限制,您将无法实际删除这些行;替换会导致匹配的每一行出现空白行。换句话说,这是:
# 富 ;酒吧 陈述;会变成:
陈述;但是,如果您将 \r、\n 或 \r\n 添加到模式的末尾,替换将在 Notepad++ 6.0 中起作用,具体取决于您的文件使用哪一行结尾,结果是:
【讨论】:
正如其他人所指出的,在 Notepad++ 6.0 及更高版本中,可以使用“替换”功能删除所有以“;”开头的行或“#”。
Tao 提供了一个正则表达式作为起点,但它不考虑“;”之前可能存在的空白或给定行上的“#”字符。例如,以“;”开头的行或者“#”但是在使用Tao的正则表达式^(#|;).*\r\n时不会被删除。
Tao 的正则表达式也没有考虑 BoltClock 回答中提到的警告:跨系统换行符的差异。
一个改进是使用^(\s)*(#|;).*(\r\n|\r|\n)?,它解释了前导空格和换行符的差异。此外,结尾的? 处理文件最后一行以# 或; 开头但不以换行符结尾的情况。
对于好奇的人,可以辨别给定文档中使用了哪种类型的换行符(并且可以使用多种类型):查看 -> 显示符号 -> 显示行尾。
【讨论】:
? 附加到末尾,如下所示:^(\s)*(#|;).*(\r\n|\r|\n)?。我将相应地更新原始答案。谢谢!
这是可能的,但不是直接的。
简而言之,去搜索,使用您的正则表达式,检查“标记线”并单击“查找全部”。它会为所有这些行生成书签。
在搜索菜单中有一个点“删除书签行”瞧。
我在这里找到了答案(正确答案是第二个,不是公认的!): How to delete specific lines on Notepad++?
【讨论】:
也许你应该试试
^[#;].*$
^ 匹配开头,$ 结尾。
【讨论】:
在 Notepad++ 中,您可以使用“查找”对话框中的“标记”选项卡将与您的查询匹配的所有行添加为书签,可以是正则表达式或普通(通配符)。
然后使用搜索 > 书签 > 删除书签行。
【讨论】: