【问题标题】:How to replace only first instance of text in notepad++ in multiple files?如何在多个文件中仅替换记事本++中文本的第一个实例?
【发布时间】:2013-03-28 17:45:27
【问题描述】:

我正在更新一个网站并进行一些更改,并且我已经设法使用标准查找和替换搜索对多个文件进行了大部分更改。我的 f/r 只剩下一个错误需要修复,但它在整个文档中多次出现,我只想替换第一个实例,这是唯一一次出现错误。

 </div><div class="boxb">

这在每个文件中发生七次,只有第一次我需要删除尾随的、关闭的 DIV。其他都是正确的。

我知道我需要使用正则表达式模式,但我尝试了一些示例,但它们要么不起作用,要么仍然替换所有出现,而不仅仅是我需要的第一个。

另外需要明确的是,我不知道这是否会有所不同,但我需要对多个文件执行此操作,因此使用“查找文件”而不是“替换”。

谢谢

【问题讨论】:

    标签: regex notepad++ replace


    【解决方案1】:

    您提供的文本似乎是固定的,因此不需要正则表达式即可找到它。 在文件中查找 的替换部分替换每个文件中的所有 项。假设文件数量不大,我建议使用在文件中查找上的全部查找按钮,然后手动一一更改。如果文件数量很大,那么 Notepad++ 可能不是进行更改的最佳工具。

    对于其他选项,请考虑 Perl 或 Awk 等程序;有了这些,任务就很简单了。

    【讨论】:

    • 文件数约为 150,所以不,不是我想手动执行的操作,这就是为什么我首先使用 F+R 进行更改。如果有人可以引导我完成它,我愿意使用其他程序,但肯定可以使用 Notepad++?
    【解决方案2】:

    一种方法是匹配文件的全部内容,然后替换回您仍要保留的部分。这确保了整个文件恰好产生 1 个匹配项。此方法尚未测试,但在大文件上可能会很慢。

    1. 只需照常编写正则表达式,然后在前面添加(.*?),在后面添加(.*)

      (.*?)pattern(.*)
      

      您应该在几个文件上使用(.*?)pattern 进行测试,以确保它与您要删除的文本的第一个实例相匹配。

    2. 选中复选框. 匹配换行符”

    3. 替换字符串可能会因您的正则表达式而异,但我们的想法是捕获您想要保留在步骤 1 的正则表达式中的部分,并在此步骤中将它们替换回来。

      例如,如果您想删除与pattern 匹配的任何内容,则使用$1$2 作为替换字符串。

    【讨论】:

    • 我可能应该说我没有正则表达式的经验,我只是提到它,因为我认为它可能是需要的。
    猜你喜欢
    • 2021-07-24
    • 2010-09-29
    • 1970-01-01
    • 2018-09-13
    • 2020-01-03
    • 2015-10-15
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多