Regex 记事本++如何计算文本文件列表中的每个单词?

Regex 记事本++如何计算文本文件列表中的每个单词?,regex,count,notepad++,Regex,Count,Notepad++,我有一个文本文件列表,如下所示: ALEX MIKE JOSHUA AMBER ALEX ROBERT CHRIS ALEX JOSHUA MICHAEL ROOGER ALEX AMBER 我想数一数每个字写了多少 例如: alex (4) MIKE (1) JOSHUA (2) AMBER (2) etc.. 如何在记事本++中做到这一点?没有内置单词频率计数器。可用的RegExp操作不允许插入计数变量 内置智能高亮显示将仅显示实际行的所有发生对象。“查找”对话框的计数功能同样适用于匹

我有一个文本文件列表,如下所示:

ALEX
MIKE
JOSHUA
AMBER
ALEX
ROBERT
CHRIS
ALEX
JOSHUA
MICHAEL
ROOGER
ALEX
AMBER
我想数一数每个字写了多少

例如:

alex (4)
MIKE (1)
JOSHUA (2) 
AMBER (2)
etc..

如何在记事本++中做到这一点?

没有内置单词频率计数器。可用的RegExp操作不允许插入计数变量

内置智能高亮显示将仅显示实际行的所有发生对象。“查找”对话框的计数功能同样适用于匹配一个单词的所有实例,将显示计数,然后重复。对于短名单,这样一个步骤可能有效

除非您准备编写一个新插件或一些外部程序,否则使用web服务可能是一个快速解决方案或解决方案


在Unix/Linux上,sort file.txt | uniq-c | sort-nr将给出预期的结果。

虽然我不知道在常用的数字系统(如十进制或二进制)中不使用Python脚本或其他插件就可以实现这一点的简单方法,但我想我可以在中对它们进行计数,并在这个过程中获得一个免费的条形图:

对于所有替换,请选择带有的正则表达式。未选中匹配换行符;根据需要选中或取消选中匹配大小写

按编辑->行操作->按字典顺序升序排序行 将所有^1替换为1,以在每行的开头添加1 将所有1.+\R?=1\1替换为1,以删除重复项,同时保留1 将所有^1*替换为\1,以便在计数后添加空格 或者,使用编辑->行操作->按字典顺序降序对行进行排序 我这样写是为了使AALEX和ALEX不被当作副本处理,同时也使Regex可以一次性完成,而无需反复点击replace

如果你的一些单词以1开头,这显然是行不通的;如果是这种情况,只需使用文本中未出现的其他字符作为计数字符

我喜欢这种在行首使用一元数的方法,因为:

结果就是一个有效的条形图 如第5步所述,结果很容易按用途排序。 如果你不需要第1点。二,。并希望在每一行的末尾都有数字,就像你的问题一样;而不是步骤4。五,。在上面,将^1*+$替换为\2\\1\ 如果您需要查看十进制数字而不是一元数字,一元数字一旦超过4或5就很难读取,只需双击该数字,记事本++状态栏将以十进制显示,因为它显示选定的字符数,例如Sel:7 所有这些步骤都是可宏记录的,因此您可以执行一次并记录,然后随时使用快捷方式或菜单再次执行 因此,在您的示例中,这将给出:

1111 ALEX
11 JOSHUA
11 AMBER
1 ROOGER
1 ROBERT
1 MIKE
1 MICHAEL
1 CHRIS
或者:

ALEX (1111)
JOSHUA (11)
AMBER (11)
ROOGER (1)
ROBERT (1)
MIKE (1)
MICHAEL (1)
CHRIS (1)

我不确定记事本++是否能做到这一点。第一步是编辑->行操作->按字典顺序升序排序行,但我不知道如何计算行数。您必须为此编写Python脚本。据我所知,没有这样的功能。如果可以的话,你可以用PHP中的file和array\u count\u值来实现。我不知道怎么通过正则表达式。演示:$a将由文件生成。我可能只需要从*nix命令行执行此操作:cat names.list | sort | uniq-c,其中names.list包含上述数据。我同意您所问的不是regex问题,但通过脚本或np++插件解决了一个重要问题-如果这是针对商业环境或数据非常敏感,那么几乎肯定会反对将数据粘贴到所列的公共网站中,而看不到数据的去向。@ardavey Jup,这是不言而喻的。你会感到惊讶的!