如何复制在notepad ++中匹配的正则表达式及其反向选择

时间:2015-09-01 15:53:57

标签: regex notepad++ clipboard copy-paste

Example for Context

如何在每行中搜索前两个字符,选择它们然后在NotePad ++中复制它们?

反之亦然=找到所有前两个字符,选择它们并能够剪切/复制它们。

具体目标是自动选择匹配的正则表达式结果,以便可以将找到的文本复制到剪贴板。据我所知,NotePad ++只能" Mark"结果发现(对于视觉区分应用稍微不同的颜色) - 这对我来说似乎是反直觉的,不能同时选择"结果发现。

非常感谢任何帮助。

在以下列表中:
09 - ExtraCare Stockpiler
01 - Food & Family Loyalist
04 - ExtraCare Enthusiast
09 - ExtraCare Stockpiler

正则表达式应该返回:
09
01
04
09

INVERTED

同样的清单应该返回:
- ExtraCare Stockpiler
- Food & Family Loyalist
- ExtraCare Enthusiast
- ExtraCare Stockpiler

完成上述操作后,选择结果的方法是什么,以便将它们复制到剪贴板。 注意:块选择(ALT +单击拖动)不是一个选项,因为有180,000多行。

1 个答案:

答案 0 :(得分:3)

我这样做的方式如下。

使用正则表达式替换来保留所需的字符并删除不需要的字符。复制现在只包含所需字符的整个缓冲区并粘贴到目标中。然后“撤消”编辑替换或重新加载文件(menu => File =>从光盘重新加载)或者只是丢弃缓冲区。一个小的变化是:将整个原始缓冲区或仅相关部分复制到临时缓冲区中;做替换;复制;糊;然后丢弃临时缓冲区。

仅保留缓冲区每行的前两个字符:将^(..).*$替换为\1。保留除缓冲区每行前两个字符之外的所有内容:将^..(.*)$替换为\1。在这两种情况下都要确保未选中“.matding newline”。

关于如何处理零,一个或两个字符的行,问题并不准确。上一段中的替换不会改变或删除这些行。因此,可能有必要在上述替换之前用过滤掉短线的东西。