如何在常用文本编辑器中执行否定搜索(或替换)

时间:2014-12-15 09:39:43

标签: regex sublimetext2 notepad++

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

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

示例:

  

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

对于上述文字,输出应为:

  

https://www.example.com

     

https://google.com

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

SynWrite 应用中:

  • 调用对话框"搜索/提取字符串"
  • 输入Regex for URL,执行"查找"
  • 现在按下按钮将找到的网址复制到新标签页