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

How to copy a regular expression matched in notepad++ and the inverse selection of it

Example for Context

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

Vice verse = 查找所有内容 NOT 前两个字符,select 他们并且能够 cut/copy 他们。

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

如有任何帮助,我们将不胜感激。

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

正则表达式应该 return:
09
01
04
09

反转

同样的列表应该return:
- ExtraCare Stockpiler
- Food & Family Loyalist
- ExtraCare Enthusiast
- ExtraCare Stockpiler

以上整理好了,有什么方法可以select把结果复制到剪贴板。 注意:块 selection(ALT + 单击拖动)不是一个选项,因为有 180,000 多行。

我的方法如下。

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

仅保留缓冲区每行的前两个字符:将 ^(..).*$ 替换为 </code>。要保留缓冲区每行的前两个字符以外的所有内容:将 <code>^..(.*)$ 替换为 。在这两种情况下,请确保未选择“. matches newline”。

问题不明确应该如何处理具有零个、一个或两个字符的行。上一段中的替换不会更改或删除这些行。因此,可能有必要在上述替换之前添加一些内容以过滤掉短行。