Regex 在记事本中设置差异++;带正则表达式
假设我有两个文件Regex 在记事本中设置差异++;带正则表达式,regex,notepad++,Regex,Notepad++,假设我有两个文件main.txt和sub.txt。假设两个文件都有唯一的行,即同一行文本在两个文件中不会出现两次。另外,假设两个文件中都没有空行。现在,将文件视为字符串集合,每个集合中的成员都出现在一行上。这是可能的,因为我们的唯一性条件。现在假设sub.txt是main.txt的一个子集。我们如何计算main.txt和sub.txt的设置差异以生成新文件diff.txt?为了清楚起见,diff.txt的行应该是main.txt中出现的行,而不是sub.txt中出现的行。diff.txt中不应有
main.txt
和sub.txt
。假设两个文件都有唯一的行,即同一行文本在两个文件中不会出现两次。另外,假设两个文件中都没有空行。现在,将文件视为字符串集合,每个集合中的成员都出现在一行上。这是可能的,因为我们的唯一性条件。现在假设sub.txt
是main.txt
的一个子集。我们如何计算main.txt
和sub.txt
的设置差异以生成新文件diff.txt
?为了清楚起见,diff.txt的行应该是main.txt中出现的行,而不是sub.txt中出现的行。diff.txt中不应有空行。diff.txt中的顺序不相关
实例
main.txt:
sub.txt:
diff.txt:
奖金问题
- 在记事本++中打开这两个文件并关闭任何其他文件
- 按字母顺序对每个文件进行排序:
- 确保以下正则表达式在两个文件中都没有匹配项,这将保证它们是无重复的:
。如果要删除重复项,请将该正则表达式的所有引用替换为^(+$\r\n)\1
\1
- 通过搜索
确保两个文件中都没有空行。如果发现任何错误,您可以手动删除它们^$
- 创建第三个文件并将
和sub.txt
的内容粘贴到此文件中。然后按字母顺序排序。计算正则表达式的出现次数:main.txt
以检测重复行。如果计数与^(+$)\r\n\1
中的行数匹配,则它是sub.txt
的子集。保留此文件以备将来使用main.txt
^(+$)\r\n\1\r?\n?
,并替换为空字符串。这将从main.txt
中删除sub.txt
的所有元素,留下diff.txt
注意:这种方法可能会在diff.txt的末尾留下一个空行,以防在diff.txt中发现重复项。在这种情况下,只需手动将其删除。为什么不编写一个小脚本?您可以使用比较插件:@Alex我实际上在检查子集的部分使用了比较插件。有没有办法使用比较插件生成差异?@Toto我受时间限制,觉得这样更快。
Hello
World
How
You
Are
World
Hello
How
Are
You