在使用 Sublime Text 3 编辑器打开的 txt 文件中使用正则表达式查找重复项

Find duplicate using regex in a txt file opened with Sublime Text 3 editor

我有以下 table,写在一个 txt 文件中。

+----------------+---------------+------------+
| Reference Date | Instrument ID | Entity ID  |
+----------------+---------------+------------+
| 2019-06-28     | 4251675720    | 1000183742 |
+----------------+---------------+------------+
| 2019-06-28     | 4251675720    | 1000183742 |
+----------------+---------------+------------+
| 2019-06-28     | 2113750655    | 100065856  |
+----------------+---------------+------------+
| 2019-06-28     | 3512075270    | 1002923999 |
+----------------+---------------+------------+
| 2019-06-28     | 4251998103    | 1003890261 |
+----------------+---------------+------------+
| 2019-06-28     | 4239113350    | 1004043945 |
+----------------+---------------+------------+
| 2019-06-28     | 8569030255    | 1004043945 |
+----------------+---------------+------------+
| 2019-06-28     | 6692802619    | 1004584989 |
+----------------+---------------+------------+
| 2019-06-28     | 6751615521    | 1005048991 |
+----------------+---------------+------------+
| 2019-06-28     | 1338818134    | 1005076529 |
+----------------+---------------+------------+
| 2019-06-28     | 1903780287    | 1005519781 |
+----------------+---------------+------------+
| 2019-06-28     | 3023132803    | 1005535434 |
+----------------+---------------+------------+
| 2019-06-28     | 3075990149    | 1006443568 |
+----------------+---------------+------------+
| 2019-06-28     | 1821112520    | 1007165898 |
+----------------+---------------+------------+
| 2019-06-28     | 4249904989    | 100753094  |
+----------------+---------------+------------+
| 2019-06-28     | 4230960972    | 1009300504 |
+----------------+---------------+------------+
| 2019-06-28     | 2254190165    | 1010611747 |
+----------------+---------------+------------+

文件如下所示:

txt 文件是从 Sublime Text 3(文件编辑器)打开的。

我的问题:我不想重复,我想因为 Sublime Text 支持 Find/Replace 正则表达式功能来查找那些重复项并删除它们手。 具体来说,我想在仪器 ID、实体 ID 列中找到重复项。例如,如果您检查前两行都具有相同的对(仪器 ID、实体 ID)。使用正则表达式我想找到具有相同对的其余行并手动删除第二行。

请记住,在我的 txt 文件中,语法是:1000183742 1006443568(列之间有 6 个空格 + 1 个制表符)。因此,对于正则表达式,我正在寻找与

相同的一对

您可以捕获 2 个捕获组中的数字并断言它们出现在右侧。

\b(\d{10}) {6}\t(\d{10})\b(?=[\s\S]*\b {6}\t)\b
  • \b(\d{10})字界,截取第1组10位
  • {6}\t 匹配 6 个空格和一个制表符
  • (\d{10})\b在第2组和字边界中捕获10个数字
  • (?=正向前瞻,断言右边的内容包含
    • [\s\S]* 匹配任何字符 0+ 次
  • \b {6}\t)\b 使用 backreference
  • 匹配第 1 组和第 2 组中的完全匹配值
  • ) 关闭前瞻

Regex demo

您也可以切换它并使用负先行获取右侧没有重复值的匹配项。请注意,我使用了 \d{9,10},因为并非所有值都是 10 位

\b\d{4}-\d{2}-\d{2}[ \t]+\b(\d{9,10}) {6}\t(\d{9,10})\b(?![\s\S]*\b 

Regex demo