我有一部分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 ++中找到此功能。这根本不可能还是我太笨了?
答案 0 :(得分:94)
自Notepad ++ 5.9起,他们为“删除未标记的行”添加了一项功能,该功能可用于删除您不想要的所有内容以及一些搜索并替换每个值行上的其他文本。
你也可以使用搜索做一个类似的事情 - &gt;书签 - &gt;复制书签行
从技术上讲,您仍然无法复制标记文本,但您可以使用标记文本为行添加书签,然后对带书签或无标记的行执行各种操作。
答案 1 :(得分:22)
我添加此内容是为了完整性,因为这篇文章在Google搜索结果中很高。
您实际上可以从正则表达式搜索中复制所有内容,而不是一步到位。
答案 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)
我希望你试图提取:
“性能”
“维护”
“系统稳定性”
这是方式 - 步骤1/3:打开搜索 - >查找 - >替换选项卡,选择正则表达式单选按钮。输入查找内容:(\“[a-zA-Z0-9 \ s] + \”) 在替换为:\ n \ 1并单击替换所有按钮。
步骤2/3:第一步后,您的关键字将在下一行中。(如下图所示)。现在转到Mark选项卡并在Find what:Field中输入相同的正则表达式。 在书签线上放置复选标记。然后单击全部标记。
答案 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。
将要搜索的整个文本粘贴到&#34;示例文本&#34; Expresso的窗格,
按&#34;运行匹配&#34;按钮。右键单击&#34;搜索结果窗格&#34;和&#34;导出到...&#34;或&#34;将匹配的文本复制到剪贴板&#34;。
NB:原作者是 @Andreas Jansson ,但它隐藏在评论中,所以由于此页面在Google搜索中排名很高,我将其留在此处供其他人使用
答案 9 :(得分:0)