如何使用 Notepad++ 仅在特定行上替换路径最后一部分的字符?

如何使用 Notepad++ 仅在特定行上替换路径最后一部分的字符?

我正在寻找以下事项。我有 1400 多项事项要做。

应用程序=M:\8TB+\GOG.Com\99_Levels_To_Hell\Launch_99_Levels_To_Hell.Lnk
工作文件夹=M:\8TB+\GOG.Com\99_Levels_To_Hell\

ExitMethod=WinClose

我想做到

Application=M:\8TB+\GOG.Com\99_Levels_To_Hell\Launch 99 Levels To Hell.Lnk
工作文件夹=M:\8TB+\GOG.Com\99_Levels_To_Hell\

ExitMethod=WinClose

我只想定位“Launch”和“Lnk”之间的部分。删除两者_之间的所有内容。

有什么办法可以做到这一点?

答案1

如何使用 Notepad++ 仅在特定行上替换路径最后一部分的字符?

最好的、可能也是唯一的解决方法是正则表达式。这需要一点思考,但下面的方法应该可行:

搜索(?<!\\)(?!.*\\)_(?=.*Lnk)

用。。。来代替

(空格字符↑)

(在当前/所有文档中;注意:' ' 是空格字符)

解释

  • 匹配零件最后一个反斜杠后,我们将负向后视与负向前视结合起来:(?<!\\)(?!.*\\)

    (我坦率地承认这部分有点像黑魔法,我仍然不完全理解——\后面没有任何字符,\前面也没有任何字符跟随?)

  • 匹配下划线:_

  • 你只想匹配与Application快捷方式匹配的行,所以我们确保行以 ' Lnk'结尾通过使用负向前瞻:(?=.*Lnk)

概括

因此,总的来说,匹配下划线, 但只有最后一个反斜杠后仅限于以“Lnk”结尾的行。 那是,(?<!\\)(?!.*\\)_(?=.*Lnk)

演示

正则表达式实际应用

在 regex101 中尝试一下!


我只能使用您提供的行,但只要它们满足这些假设(在反斜杠、下划线后对最后一部分进行操作,并以“Lnk”结尾),它也应该适用于其他行。

相关内容