在Notepad ++或Programmer的记事本中批量“查找并替换”多行的功能?

时间:2017-07-04 06:20:14

标签: text replace find notepad++ bulk

我有一个包含数千个代码行的文件,我需要首先找到一个文件名(<path>./THIS-TEXT.rom</path>之间的文本),复制该文本,然后替换以下行(<name>this-one-replaced</name>之间的文本)与该文本。然后继续,直到找到下一个序列。

我已经手动执行此操作,然后才意识到可能需要8个小时的手动操作来完成我的项目。我认为必须有一些更简单的方法来做到这一点。下面是两个代码块的连续示例。请注意,它只是连续几千中的两个。

<game id="494">
    <path>./The Legend of Zelda.rom</path>
    <name>legend of zelda, the (en,eu,it)</name>
    <genre>Miscellaneous</genre>
</game>
<game id="954">
    <path>./Final Fantasy.rom</path>
    <name>final fantasy (usa, europe)</name>
    <genre>Miscellaneous</genre>
</game>

基本上,我需要弄明白如何在<path>./.rom</path>之间传递文字 <name>,并将</name><game id="494"> <path>./The Legend of Zelda.rom</path> <name>The Legend of Zelda</name> <genre>Miscellaneous</genre> </game> <game id="954"> <path>./Final Fantasy.rom</path> <name>Final Fantasy</name> <genre>Miscellaneous</genre> </game> 之间的下一行替换为下一行,因为它会向下移动文件以便下一次出现。

IsNull([tbl2].[True Available Quantity]) Or [tbl2].[True Available Quantity]=""

1 个答案:

答案 0 :(得分:0)

在Notepad ++中,这可以通过简单的正则表达式完成。搜索:

^(\h*<path>\./)([^<>\r\n]+)(\.rom</path>\h*[\r\n]+\h*<name>)[^<>\r\n]*(</name>)

并将其替换为

\1\2\3\2\4

<强>解释

^(\h*<path>\./)获取开场路径文本并将其保存在捕获组\1中。

([^<>\r\n]+)从路径行获取所需的文件名文本,并将其保存到\2

(\.rom</path>获取路径行的其余部分。

\h*[\r\n]+\h*<name>)获取换行符和空格以及名称行的开头。此文本和路径行的其余部分将保存到\3

[^<>\r\n]*获取名称行中不需要的部分,但不保存它。

(</name>)获取名称行的最后部分并将其保存到\4

重组。 \1\2\3生成路径行和名称行的开头。下一个\2将不需要的名称行文本替换为文件名的所需部分。最终的\4完成了新的名称行。

当然,必须在Notepad ++的替换窗口中选择“正则表达式”。