【问题标题】:Deleting every 2nd line from a file using Notepad++使用记事本++从文件中删除每第二行
【发布时间】:2014-05-26 17:37:51
【问题描述】:

我正在寻找一些正则表达式帮助。

我有一个文本文件,没有什么特别重要的,但我想删除其中的每一行 - 我已尝试遵循本指南:Delete every other line in notepad++

但是我无法让它工作,我使用的正则表达式可以吗?我是正则表达式的菜鸟

查找:

([^\n]*\n)[^\n]*\n

替换为:

$1

无论我尝试什么(鼠标位置在开头,ctrl+a 和全部替换)我都无法让它工作。感谢您的帮助。

我已将正则表达式放入此处:http://regexpal.com/,如果我删除最后的 \n,它会突出显示各个行。

【问题讨论】:

    标签: regex notepad++


    【解决方案1】:

    确保为搜索模式选择正则表达式...

    另外,您可能想要make that final newline optional。如果行数为偶数且尾随没有换行符,则不会删除最后一行。

    ([^\n]*\n)[^\n]*\n?
    

    更新:

    看看Windows handle new lines\r\n 的区别,而不仅仅是\n。尝试updating the expression 考虑到这一点:

    ([^\r\n]*[\r\n]+)[^\r\n]*[\r\n]*
    

    最终更新:

    感谢@zx81,我现在知道 N++ 使用 PCRE,所以\R 可以用于 unicode 换行符。但是[^\R] 不起作用(这会查找除R 之外的任何内容),因此您需要保留[^\r\n]。这个can be simplified as

    ([^\r\n]*\R)[^\r\n]*\R?
    

    【讨论】:

    • 是的,我在搜索模式下选择了 reg ex - 我已经在 notepad++ 中尝试过您的示例,它可以正常工作...不幸的是,如果我针对我的文件实施它,它不会。只是说 0 次出现已被替换。每行的内容各不相同,但我认为(不理解表达式 - 现在用谷歌搜索)没关系
    • 不,没关系。原始表达式应该可以正常工作——主要是搜索模式。
    • 这么想 - 我尝试重新创建我的文本文件,但它不起作用......我使用的是记事本++ 6.5.5 我认为那是最新的? (现在更新)
    • 标记为已回答 - 干杯!决定使用我的 linux 和 sed 以避免再次发生。
    • +1 Sam,但由于 N++ 使用 PCRE,您可以将 [\r\n] 替换为 \R,将 [^\r\n] 替换为 [^\R] :)
    猜你喜欢
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 2017-03-20
    • 2014-01-06
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多