首先,我希望能够做两件事:
第一件事:
要提取foo_abc(以及类似的每一行,例如goo_zxy和doo_fgh),我需要删除一些附加 BEFORE foo_abc和的文字 AFTER foo_abc。
例如:
TEXTBEFORE foo_abc的 TEXTAFTER
TEXTBEFORE goo_zxy的 TEXTAFTER
TEXTBEFORE doo_fgh的 TEXTAFTER
获得:
foo_abc
goo_zxy
doo_fgh
第二件事:
我现在需要在 之前添加不同的文字 ,再次在 foo_abc之后添加 。 像这样:
TEXTA foo_abc的 TEXTB
所以我所做的是:
查找:^
替换: TextA
查找:$
替换: TextB
哪种方法效果很好,但我必须执行查找并替换 TWICE ,这不是很有效。为避免这种情况,我发现了这一点:Multiple word search and replace in notepad++
如此应用:
查找:(^)|($)
替换:(?1 TextA )(?2 TextB )
但它并没有太好用。
AND,如上所述,我需要这个适用于 EACH和每一行 : 例如:
foo_abc
goo_zxy
doo_fgh
我需要在每个行的开头插入 TextA ,并在每行的末尾插入 TextB ,如下所示:
TEXTA foo_abc的 TEXTB
TEXTA goo_zxy的 TEXTB
TEXTA doo_fgh的 TEXTB
可以这样做吗? (是的,我实际上需要这样做超过10000行,而不仅仅是3行,并且想要一种有效的方法)。
我错过了更快的方法来完成所有这些吗?也许通过在 1st Thing ' 1st Thing '中进行搜索和替换。在 TEXTBEFORE 和 TEXTAFTER 上,分别与 TextA 和 TextB 一起进行?
非常感谢。
编辑:是的,它们是文字字符串。是的,它们确实包含特殊字符,因为它们代表URL的一部分。答案 0 :(得分:2)
有两种情况:1)您想要替换TEXTBEFORE
或TEXTAFTER
,无论其中任何一个存在,2)TEXTBEFORE
和TEXTAFTER
必须存在
您可以使用单个搜索和替换操作:
查找内容:^(TEXTBEFORE)|TEXTAFTER$
替换为:(?{1}TextA:TextB)
注意:如果TEXTBEFORE
和TEXTAFTER
包含特殊字符,您可以使用
查找内容:^(\QTEXTBEFORE\E)|\QTEXTAFTER\E$
<强>详情:
^(TEXTBEFORE)
- 在一行开头匹配并捕获到第1组TEXTBEFORE
|
- 或TEXTAFTER$
- 在一行末尾匹配TEXTAFTER
。替换模式:
(?{1}
- 如果第1组匹配,那么
TextA
- 返回TextA
:
- 其他TextB
- 替换为TextB
)
- 条件替换模式的结束。如果您需要匹配以某些文字开头并以其他文字结尾的行,请使用
查找内容:^TEXTBEFORE(.*?)TEXTAFTER$
替换为:TextA$1TextB
<强>详情:
^
- 开始行TEXTBEFORE
- 此处有一些文字(.*?)
- 第1组(可以用替换模式中的$1
反向引用引用)匹配除了换行符之外的任何0+字符TEXTAFTER
- 有些文字在...... $
- 行尾。答案 1 :(得分:1)
尝试:
TEXTBEFORE(.+?)TEXTAFTER
替换为
TextA$1TextB
请参阅this示例和说明
如果你需要找到整行:
^TEXTBEFORE(.+?)TEXTAFTER$
替换与以前相同。