我有几个文件遵循以下格式:
ABC 123 <a href="link">XYZ<a/> DEF 456. GHI 789 <a href="link">UVW</a>. etc.
我想要提取所有 XYZ 和 UVW 的实例并将它们添加到文档末尾,如下所示:
ABC 123 <a href="link">XYZ<a/> DEF 456. GHI 789 <a href="link">UVW</a>. etc. XYZ, UVW
有没有办法用 Notepad++ 来做到这一点?
到目前为止,我所掌握的是如何捕获的单个实例,通过等<a href="link">XYZ<a/>
提取部分。但我不确定如何将该内容粘贴到文档末尾(大概是通过),也不知道如何捕获所有实例(XYZ、UVW 等)XYZ
(.*?)/$1
$
答案1
我已通过应用以下更改来修改您的示例:
- 手动替换
<a/>
为,</a>
因为我认为这是一个打字错误。 - 添加了几行新代码,并改变了每行出现的次数,以检查正则表达式的稳健性
最后我使用的输出如下:
ABC 123 <a href="link100">Desc100</a> DEF 456. GHI 789 <a href="link101">Desc101</a>. etc.1
ABC 123 <a href="link102">Desc102</a> DEF 456. GHI 789 <a href="link103">Desc103</a>. etc.2
ABC 123 <a href="link104">Desc104</a> DEF 456. GHI 789 <a href="link105">Desc105</a>. etc.ABC 123 <a href="link106">Desc106</a> DEF 456. GHI 789 <a href="link107">Desc107</a>. etc.3
ABC 123 <a href="link108">Desc108</a> DEF 456. GHI 789 <a href="link109">Desc109</a>ABC 123 <a href="link110">Desc110</a>. etc.4
复制原始文档很重要。
在 N++ 中按
Ctrl+H
查找内容:(.*?<a href="(?<url>[^"]*)">(?<description>.*?)<\/a>)(?(?!(.*?<a href="(?<url>[^"]*)">.*?<\/a>))(.*?$)|())
替换为:$+{description},
// 分隔符是逗号,但可以使用任何其他字符代替
环绕:选中
搜索模式 → 选择“正则表达式”和“。匹配换行符”:选中
单击“全部替换”按钮。
获得的输出:
Desc100,Desc101,Desc102,Desc103,Desc104,Desc105,Desc106,Desc107,Desc108,Desc109,Desc110,
此操作使文档保留所有必需的实例。现在,可以手动或以编程方式将这些内容附加到原始文档中。