将Textpad或Notepad ++中的所有正则表达式匹配项导出为列表


28

在Textpad或Notepad ++中,是否可以将正则表达式查找的所有匹配项导出为单个列表?

在一个大文本文件中,我正在使用正则表达式搜索标签(用%%括起来的单词),%\< and \>%并将所有匹配项都列为一个列表,以便可以使用Excel删除重复项并获得唯一标签列表。


如果您将RegexExtract插件用于Notepad ++,则它可以为您删除重复项,并且无需使用Excel进行后处理。
R. Schreurs '18

Answers:


53

您可以通过在Notepad ++中使用反向引用以及“查找和标记”功能来实现。

  1. 使用正则表达式(例如%(.*?)%)找到匹配项,然后将其替换为\n%\1%\n,之后我们将目标词放在单独的行中(即,没有一行将有多个匹配词)

  2. 使用Search-> Find-> Mark功能用正则表达式标记每一行,%(.*?)%并记住在标记文本之前勾选“ 书签行

  3. 选择搜索->书签->删除未标记的行
  4. 保存剩余的文本。这是必需的列表。

我还有一个文件,其中用<>作为标签而不是%%,我尝试使用<(。*?)>和\ n <\ 1> \ n,但是它不起作用,请帮忙。
Kiranshell 2012年

不客气:)对我来说,它也为<>工作。有嵌套的<>吗?您能否详细说明“无效”的确切原因?
Ankit 2012年

我试图像以前一样制作一个标签列表,但是这些标签曾经有<>,我使用的是<(。*?)>而不是%(。*?)%和\ n <\ 1> \ n而不是\ n %\ 1%\ n,这是指向示例文件wikisend.com/download/158050/tags.txt
Kiranshell 2012年

我再次尝试使用提供的文本并使用<(。*?)>正常运行。我得到了标签<Supplies> <hostname> .....的列表,以此类推
Ankit

请提及您遇到的确切错误/问题。听起来可能很愚蠢,但请记住将光标移到顶部。我经常犯该错误,搜索没有返回结果... :)
Ankit

5

Notepad ++中这样做是强制性要求吗?您使用Windows还是某种形式的Unix?如果您使用的是Windows,则可以从命令提示符处(部分)执行此操作:

findstr / r“%[az]。* [az]%%[az]%” your_file > new_file

findstr受到的启发grep,因此此new_file 将包含与您的搜索条件匹配的所有;然后,您可以使用Notepad ++去除不需要的文本(在第一个%的左侧和第二个%的右侧)。


而且,当然,如果您使用的是Unix,则可以使用进行等效的任务sed


远非最佳答案!
Charles-Antoine Fournel

2

有一个Notepad ++插件,可以将匹配的正则表达式复制到新选项卡中的新文件中。 正则表达式提取

因为我没有找到任何可以从当前文档中提取文本或使用其他设置(例如大小写转换)从某个位置提取所有文件的Notepad ++插件,所以我决定尝试自己制作。(...)插件界面非常简单(...)。(...)“查找”,“替换”和“蒙版”字段使用C ++ 11 regex语法。从文件中提取仅适用于UTF8中的文件。

针对问题量身定制的“ 编辑对话框”输入

在此处输入图片说明

在图像中,您可以看到如何填写对话框。我假设一个单词不包含空格等,仅包含\ w匹配的字符。值得注意的是:

  • 使用一对方括号,以便选择单词,而无需使用直角字符。
  • 选择选项用替换提取,选择第一个匹配项。否则,您将获得所有$ 1,$ 2等的列式输出。
  • 选中跳过$&...,以省略完整的匹配项。
  • 选中唯一过滤器,以仅报告每个匹配项一次。
  • 单击提取以选择获取结果。(搜索仅找到匹配项,但不报告)。

不错的插件,完全可以满足您的要求。
R. Schreurs '18

似乎不适用于64位Notepad ++
Ivan Chau,

0

在TextPad中,您将Find照常调出框,然后使用Mark All按钮。

从那里开始使用Copy Bookmarked Lines功能。(编辑菜单>复制其他>书签行。)


就我个人而言,我经常执行精确的操作,因此我为“复制书签的行”功能配置了键盘快捷键:Ctrl + Alt + c。
daveloyall

我之所以问这个问题,是因为我在搜索Notepad ++问题。作为忠实的,不付费的Textpad用户多年之后,我转向了Notepad ++(GPL)。
daveloyall
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.