在 Textpad 或 Notepad++ 中是否有一个选项可以将正则表达式查找的所有匹配项导出为单个列表?
在一个大文本文件中,我使用正则表达式搜索标签(% % 中的单词),%\< and \>%
并希望将所有匹配项作为一个列表,以便我可以使用 Excel 删除重复项并获取唯一标签列表。
答案1
您可以使用以下方法实现此目的反向引用以及 Notepad++ 中的查找和标记功能。
使用正则表达式找到匹配项(例如
%(.*?)%
)并将其替换为\n%\1%\n
,之后我们将在单独的行中获得目标词(即,没有一行会有多个匹配的词)使用搜索-->查找-->标记功能用正则表达式标记每一行
%(.*?)%
,并记得勾选'书签线' 在标记文本之前- 选择搜索-->书签-->删除未标记的行
- 保存剩余的文本。这是必需的列表。
答案2
正在做这个在Notepad++ 是必需的吗?您使用的是 Windows 还是某种形式的 Unix?如果您使用的是 Windows,则可以(部分)从命令提示符执行此操作:
findstr /r "%[az].*[az]% %[az]%"你的文件>新文件
findstr
隐约受到启发grep
,所以这新文件
将包含所有线符合您的搜索条件;然后您可以使用 Notepad++ 删除不需要的文本(第一个 % 的左侧和第二个 % 的右侧)。
当然,如果你使用的是 Unix,你可以用 完成相同的任务sed
。如果你有 GNU grep
(即,如果你使用的是 Linux),你可以用 完成grep -o
。
答案3
有一个 Notepad++ 插件可以将匹配的正则表达式复制到新选项卡中的新文件中。 正则表达式提取
由于我没有找到任何 Notepad++ 插件可以从当前文档中提取部分文本或从某个位置提取所有文件,并附带一些附加设置(如大小写转换),所以我决定自己尝试制作。(...) 插件界面非常简单 (...)。(...) “查找”、“替换”和“掩码”字段使用 C++11 正则表达式语法。目前,从文件中提取仅适用于 UTF8 文件。
编辑 针对问题定制的对话输入
在图像中,您可以看到如何填写对话框。我假设单词不包含空格等,只包含 \w 匹配的字符。值得注意的是:
- 使用一对括号,允许选择单词,而不选择百分比字符。
- 选择选项提取并替换,选择第一个匹配项。否则,您将获得所有 $1、$2 等的列式输出。
- 查看跳过 $&...忽略完整的匹配项。
- 查看过滤唯一每场比赛仅报告一次。
- 点击提炼选择获取结果。(搜索仅找到匹配项,但不报告)。
答案4
如果有人对在线解决方案感兴趣(因为 notepad++ 插件在 64 位上不起作用),你可以尝试生物工具它可以完全提取你的正则表达式,无需额外的行或添加其他行。