【问题标题】:How do I join two regular expressions into one in Notepad++?如何在 Notepad++ 中将两个正则表达式合并为一个?
【发布时间】:2013-11-25 16:25:39
【问题描述】:

我在网上和这里搜索了很多,但找不到解决方案。 我必须对保存在文本文件中的所有注册表路径进行两次替换,如下所示:

  1. 将所有星号替换为:[#42]
  2. 将所有单个反斜杠替换为两个。

我已经有两个表达式可以做到这一点:

第一种情况:

查找:(\*) - 替换:\[#42\]

第二种情况:

查找:([^\\])(\\)([^\\]) - 替换:$1$2\\$3

现在,我只想将它们组合成一个表达式,这样我就可以一次性运行它。 我在 Windows 7(64 位)中使用 Notepad++ 6.5.1。

我希望它工作的示例行(我包括反斜杠,但我不知道它们是否会出现在 html 中):

HKLM\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\

我已经尝试过用管道分隔它,就像我在 Jscript (WSH) 中所做的那样,但它在这里不起作用。我还尝试了很多其他的东西,但都没有奏效。 有什么帮助吗? 谢谢!

编辑:我已经把所有的反斜杠都写对了,但是页面 html 似乎正在“吃掉”其中的一些!
Edit2:有人重新编辑了我的文本以包含一个不删除反斜杠的重音,所以表达式又出错了。但我得到了它并修复了它。 ;-) 抱歉,这是我在这里的第一篇文章。 :)

【问题讨论】:

  • 我认为你不能。 (*) 也不是有效的 PCRE 正则表达式。
  • 如果您想用** 替换*,这很容易做到。但事实上,您无法灵活地使用 2 个完全不同的替代品。

标签: regex join expression notepad++


【解决方案1】:

正如其他人已经提到的那样,这是不可能的。

但是,你可以通过使用宏在 Notepad++ 中实现你想要的。

转到“宏”>“开始录制”菜单,应用这两个搜索和替换正则表达式,按“停止录制”,然后按“保存当前录制的宏”,给它一个名称,分配一个快捷方式,然后你完成。现在,您可以随时使用一个快捷方式重复使用相同的替换。

【讨论】:

  • 糟糕!我该死的电脑刚刚在我发布这个的那一刻冻结,现在我无法编辑它......好吧,谢谢你的想法。那是一个解决方案。 :-) 我将此标记为答案。
    但是系统不允许我投票。 :(
    对于系统管理员:我知道我是新来的,但是不能对我自己的问题的答案进行投票是荒谬的。我是一个在 IT 领域拥有 20 多年经验的成年人。为什么我被当作孩子对待?你应该改变这个政策。这没有任何意义。
【解决方案2】:

由于您的替换字符串完全不同,并且使用的数据不是来自任何捕获(即[#42]),因此您不能。

请记住,替换字符串只是掩码,不能包含任何条件内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    相关资源
    最近更新 更多