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

时间:2010-02-19 19:21:54

标签: regex search notepad++

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

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

<option value="Performance"
>Performance</option>
<option value="Maintenance"
>Maintenance</option>
<option value="System Stability"
>System Stability</option>

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

10 个答案:

答案 0 :(得分:94)

自Notepad ++ 5.9起,他们为“删除未标记的行”添加了一项功能,该功能可用于删除您不想要的所有内容以及一些搜索并替换每个值行上的其他文本。

  1. 使用搜索 - &gt;查找 - &gt;标记功能标记您要保留/复制的每一行,并记住在标记文字前勾选'书签线'
  2. 选择搜索 - &gt;书签 - &gt;删除未标记的行
  3. 使用搜索 - &gt;查找 - &gt;替换以替换您不想保留/复制的其他文本
  4. 保存剩余文字或复制。
  5. 你也可以使用搜索做一个类似的事情 - &gt;书签 - &gt;复制书签行

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

答案 1 :(得分:22)

我添加此内容是为了完整性,因为这篇文章在Google搜索结果中很高。

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

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

答案 2 :(得分: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.

是的,它使用正则表达式解析HTML - these warnings适用 - 仔细检查输出。

答案 3 :(得分:9)

这类似于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并单击替换所有按钮。 Before Clicking Replace All

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

步骤3/3:转到搜索 - &gt;书签 - &gt;删除未标记的行。Remove Unmarked lines

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

答案 4 :(得分:7)

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

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

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

<msit:message xmlns:wsa="http://URL1" xmlns:msit="http://URL2" xmlns:env="http://URL3">
  <env:Body>
    <ns0:parent xmlns:ns0="http://URL4">
      <ns0:child>123456789</ns0:child>
...
    </ns0:parent>
  </env:Body>
</msit:message>`

答案 5 :(得分:2)

不,从Notepad ++ 5.6.2开始,这似乎不可能。尽管可以进行列选择(Alt + Selection),但显然没有实现多个选择,因此搜索功能也不支持。

答案 6 :(得分:2)

Notepad++ v7.9.3 中,它们提供了复制标记文本的选项。 转到搜索菜单并选择标记选项..(Ctrl+M) 输入您要查找的内容并点击标记所有选项,然后点击复制标记的文本并粘贴到您想要的任何位置。

您可以在搜索模式下使用正则表达式选项复制多个标记行。

一个简单的例子:假设您要在一行中的任何位置查找文字字符串 12345

首先,要匹配该特定行的所有内容及其行尾字符,只需使用正则表达式:^.*12345.*\R

其次,选择: 该行的所有内容和接下来的 10 行,使用正则表达式:^.*12345.*\R(.*\R){10}

该行的所有内容和前 10 行,使用正则表达式:(.*\R){10}^.*12345.*\R

该行的所有内容和5行,前后,使用正则表达式:(.*\R){5}^.*12345.*\R(.*\R){5}

注意:对于第三个示例,使用子例程调用的另一种语法是可能的:(?1)

答案 7 :(得分:0)

我遇到了同样的问题。您可以在新选项卡中列出正则表达式匹配项,PSPad编辑器中新行中的每个匹配项都与Notepad ++非常相似。

按Ctrl + F进行搜索,检查正则表达式,放置正则表达式并单击列表。

答案 8 :(得分:0)

使用记事本是不可能的,但这是一个简单易用的解决方案

您需要免费软件Expresso v3.1 http://www.ultrapico.com/ExpressoDownload.htm

我使用了另一款免费软件:Ultrapico的Expresso。

  1. 安装完成后,进入选项卡&#34;测试模式&#34;。
  2. 将您的REGEX复制到&#34;正则表达式&#34;窗格中。
  3. 将要搜索的整个文本粘贴到&#34;示例文本&#34; Expresso的窗格,

  4. 按&#34;运行匹配&#34;按钮。右键单击&#34;搜索结果窗格&#34;和&#34;导出到...&#34;或&#34;将匹配的文本复制到剪贴板&#34;。

  5. NB:原作者是 @Andreas Jansson ,但它隐藏在评论中,所以由于此页面在Google搜索中排名很高,我将其留在此处供其他人使用

答案 9 :(得分:0)

“复制标记文本”现在是 Notepad++ 中的一个内置功能——图解答案

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

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

enter image description here

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