如何在记事本++中复制标记文本

Ale*_*lex 55 regex search notepad++

我有一部分HTML源文件包含我想要使用Notepad ++的正则表达式功能一次选择和复制的字符串.

以下是文本来源的一部分:

<option value="Performance"
>Performance</option>
<option value="Maintenance"
>Maintenance</option>
<option value="System Stability"
>System Stability</option>
Run Code Online (Sandbox Code Playgroud)

我正在使用正则表达式"[0-9a-zA-Z ]*"来搜索"值"值.我还在Notepad ++搜索中选择了该功能,以突出显示/标记找到的文本.这工作正常我现在想要将突出显示的文本复制或剪切到剪贴板以进行进一步处理.但我无法在Notepad ++中找到此功能.这根本不可能还是我太笨了?

小智 97

从Notepad ++ 5.9开始,他们为"删除未标记的行"添加了一个功能,可用于删除您不想要的所有内容以及一些搜索并替换每个值行上的其他文本.

  1. 使用"搜索" - >"查找" - >"标记"功能标记要保留/复制的每一行,并记住在标记文本之前勾选"书签行"
  2. 选择搜索 - >书签 - >删除未标记的行
  3. 使用搜索 - >查找 - >替换以替换您不想保留/复制的其他文本
  4. 保存剩余的文本或复制它.

您也可以使用搜索 - >书签 - >复制书签行来执行类似的操作

因此从技术上讲,您仍然无法复制标记文本,但您可以使用标记文本为行添加书签,然后对带书签或无标记的行执行各种操作.


小智 22

我添加此内容是为了完整性,因为此帖子在Google搜索结果中排名很高.

您实际上可以从正则表达式搜索中复制所有内容,而不是一步到位.

  1. 使用"搜索"下的"标记"并在"查找内容"中输入正则表达式
  2. 选择书签线,然后单击全部标记.
  3. 单击搜索 - >书签 - >复制书签行.
  4. 粘贴到新文档中.
  5. 您可能需要通过搜索和替换删除不属于正则表达式的行中的一些不需要的文本.

  • 这份清单中的第5号对我来说是一个耗时的部分.由于NotePad ++显然不支持复制标记文本,因此我使用了另一款免费软件:Ultrapico的Expresso.我将整个文本粘贴到Expresso的"示例文本"窗格中,并将我在Notepad ++中准备的正则表达式搜索粘贴到"正则表达式"窗格中.然后我按下"运行匹配",右键单击"搜索结果窗格"/"将匹配的文本复制到剪贴板". (2认同)

Sea*_*ira 19

试试这个:

首先,修复行结束问题:( Notepad ++不允许多行正则表达式)

搜索[扩展模式] :( \r\n>或您自己系统的行结尾)

更换: >

然后

搜索[正则表达式模式]: <option[^>]+value="([^"]+)"[^>]*>.*

(如果你想要所有出现value而不仅仅是选项,简单删除前导option)

更换: \1

第二个正则表达式的解释:

<option[^>]+     Find a < followed by "option" followed by 
                 at least one character which is not a >

value="          Find the string value="

([^"]+)          Find one or more characters which are not a " and save them
                 to group \1

"[^>]*>.*        Find a " followed by zero or more non-'>' characters
                 followed by a > followed by zero or more characters.
Run Code Online (Sandbox Code Playgroud)

是的,它使用正则表达式解析HTML - 这些警告适用 - 仔细检查输出.


Che*_*tan 12

这类似于https://superuser.com/questions/477628/export-all-regular-expression-matches-in-textpad-or-notepad-as-a-list.

我希望你试图提取:
"性能"
"维护"
"系统稳定性"

这是方法 - 步骤1/3:打开搜索 - >查找 - >替换选项卡,选择正则表达式单选按钮.输入查找内容:(\"[a-zA-Z0-9\s] + \")并在替换为:\n\1中单击并替换全部按钮. 在单击全部替换之前

第2/3步:第一步后,您的关键字将在下一行中.(如下图所示).现在转到Mark选项卡并在Find what:Field中输入相同的正则表达式.在书签线上放置复选标记.然后单击全部标记. 为线路添加书签

步骤3/3:转到搜索 - >书签 - >删除未标记的行.删除未标记的行

所以你得到的最终结果如下最后结果


And*_*son 12

“复制标记文本”现在是 Notepad++ \xe2\x80\x93 中的内置函数 图解答案

\n

我安装的 Notepad++ 版本已经有几年了,而且我关闭了自动更新。将Notepad++更新到最新版本(8.1.1)后,我发现现在确实支持复制标记文本的功能了!

\n

我冒昧地将其作为自己的答案,尽管上面有评论试图解释同样的事情。这样我就可以用一张图来说明:

\n

在此输入图像描述

\n

获得相同结果的更长方法是“标记全部”,然后转到菜单“搜索”。然后选择“复制样式文本/查找样式(已标记)”。

\n


Fid*_*del 9

在Notepad ++中有一个很棒的功能.我使用以下技术从文件中提取所有匹配项:

powershell
select-string -Path input.txt -Pattern "[0-9a-zA-Z ]*" -AllMatches | % { $_.Matches } | select-object Value > output.txt
Run Code Online (Sandbox Code Playgroud)

如果您只想要排序列表中的不同匹配项:

powershell
select-string -Path input.txt -Pattern "[0-9a-zA-Z ]" -AllMatches | % { $_.Matches } | select-object Value -unique | sort-object Value > output.txt
Run Code Online (Sandbox Code Playgroud)