【纯文本】在文本文件中批量搜索一批字符串

展开来说就是,我有一组几百个字符串,诸如“AA”、“BC”、“AE”等等,现在我要在一个文本文件中对这批字符串中的每一个进行搜索以判断其是否出现,并需要生成全部匹配字符串的清单(也就是明确报告每个字符串是否有匹配),最后如果有匹配的话最好还能报告匹配位置。如果能在vscode里进行则更好。呃,需求就是这样,先向各位表示感谢~

PS,查看了vscode里的一些安装量比较大的的扩展,基本上不是只能替换就是必须一个个手工填写字符串,似乎都不是很合适……

用正则搜索啊。新建一个文档,把字符串贴进去,改为正则表达式,再用生成的正则表达式到待查找的文件中正则搜索。
举个栗子,你的字符串有“AA”、“BC”、“AE”,新建一个文档贴进去
“AA”、“BC”、“AE””
然后改写正则表达式
(AA|BC|AE)
打开文件用这个表达式搜索就可以匹配到了。

1 个赞

grep,用批处理或者其他什么做个循环。至于最后的统计,可以单独再做。显然,处理文本数据,没有比gnu的这些工具更适合的了。你装个cmder就都有了。

1 个赞

如果是我的话我会用python

另外我觉得 如果 那个文本文件不是非常巨大的话 可以用Excel 试试

2 个赞

文本处理软件emeditor,两个csv文档,进行合并,会得出你想要的结果。必须是两个csv合并,点击CSV-高级-合并,其中一列选择【包含所有匹配的行】,另一列不选择【包含所有匹配的行】,条件设为【key1包含key2】,点击合并。这个包含是基于正则表达式的,即“我的江湖路”包含“江湖”,你自己尝试一下,很快就会明白用法。

1 个赞

你的需求,目前找不到工具直接弄,但我可以做一小工具for you。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>多匹配</title>
</head>
<body>
	<h3>文本</h3>
	<textarea id="targettxt" name="" cols="30" rows="10"></textarea>
	<h3>匹配(每行)</h3>
	<textarea id="regtxt" name="" cols="30" rows="10"></textarea>
	<button class="doregexp" style="display: block;">執行</button>
	<h3>result(number是指位置)</h3>
	<textarea id="rsttxt" name="" cols="30" rows="10"></textarea>
	<script>
document.querySelector(".doregexp").onclick = function () {
	var ttt = document.querySelector("#targettxt");
	var rrr = document.querySelector("#regtxt");
	var rst = document.querySelector("#rsttxt");
	var rrrn = rrr.value.split("\n");
	var rsttxt = "";
	for (var n = 0; n < rrrn.length; n++) {
		console.log("n", n);
		rsttxt += rrrn[n] + ",";
		if (ttt.value.match(rrrn[n])) {
			rsttxt += ttt.value.match(rrrn[n]).index;
		} else {
			rsttxt += "null";
		}
		rsttxt += "\n";
	}
	rst.value = rsttxt;
};
	</script>
</body>
</html>

以上的保存成一html文件即可。

效果:

1 个赞

需要报告出来就花时间写个工具吧,现有工具目测不能对每个字符串分组报告

1 个赞

抱歉,怪我没说清楚。我知道正则也是一个办法,但因为我需要查询的字符串有成百上千个,而且需要全部匹配字符串的清单(也就是明确报告每个字符串是否有匹配),所以正则可能并不合适。

感谢,有思路了。