【问题标题】:How to perform negative search (or replace) in common text editors如何在常用文本编辑器中执行否定搜索(或替换)
【发布时间】:2015-02-13 08:58:26
【问题描述】:

有什么方法可以在notepad++或sublime text等文本编辑器中替换我的搜索查询中不匹配的所有单词/行。

例如,我有一个文档,其中包含几个 url 链接。我可以做一些只在我的文档中留下 url 链接的事情吗?如果我必须删除 url 链接,我可以使用正则表达式搜索它们并用空字符串替换它们。但是我可以对不匹配正则表达式的内容做同样的事情吗?

例子:

这是我要删除的行,其中还可以包含特殊字符链接 % $ [] (0),这里是 url:https://google.com 再一行带有一些随机垃圾和 https://www.example.com

对于上面的文本,输出应该是:

https://google.com

https://www.example.com

【问题讨论】:

  • 请给出示例文本和预期结果。
  • 已编辑。添加示例。

标签: regex sublimetext2 notepad++


【解决方案1】:

在 Sublime Text 中,您可以搜索,点击“查找全部”,然后将所有匹配项一次复制并粘贴到新文档中。这并不完全是“否定搜索”,但它确实实现了您的目标。

【讨论】:

  • 是的,我一直在寻找类似的东西,但不知道我们可以选择多行并复制它们。谢谢。
【解决方案2】:

使用 Notepad++,您可以分两次完成。第一遍隔离了想要的文本。第二遍删除不需要的部分。

首先对\b(https://[^\s]+)(\s|$)进行正则表达式搜索并替换为\r\n\1\r\n。这是一个非常粗糙且易于欺骗的 URL 检测器,但它适用于您提供的示例。搜索字符串查找前面有单词边界的“https://”(即\b)。随后是一些非空白字符,这些字符被认为是所需文本的一部分。搜索文本的最后一部分查找空白字符或行尾。需要的部分保留在替换文本的捕获中。

第二次使用查找窗口中的“标记”选项卡定期搜索^https://。选择“书签行”,然后单击“全部标记”。 (您可能想在点击“全部标记”之前点击“清除所有标记”。)最后使用菜单 => 搜索 => 书签 => 删除未标记的行

(在 Notepad++ 版本 6.6.9 中检查)

【讨论】:

    【解决方案3】:

    SynWrite 应用中:

    • 调用对话框“搜索/提取字符串”
    • 输入正则表达式作为 URL,执行“查找”
    • 现在按下按钮将找到的 URL 复制到新标签

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多