首页 > 解决方案 > diff -I (diff --ignore-matching-lines) 正则表达式可以改进吗?

问题描述

我非常感谢我尝试将正则表达式提供给 diff 的 --ignore-matching-lines 选项的一些帮助。

我有两个文本文件,都包含这种格式的日期:

文件 1:2021 年 5 月 20 日,凌晨 1:15

文件 2:2003 年 10 月 1 日,晚上 11:37

我想比较文件,但忽略包含此类日期的行。我写了一个正则表达式来匹配它,但它看起来很长:

diff -I'^\s*.[[:digit:]]\{1,2\} \(January\|February\|March\|April\|May\|June\|July\|August\|September\|October\|November\|December\) 20[[:digit:]]\{2\}, [[:digit:]]\{1,2\}:[[:digit:]]\{1,2\} [a\|p]m\s*$' file1 file2

然后我缩短了它,牺牲了几个月的准确性:

zdiff -I'^\s*.[0-9]\{1,2\} [ADFJMNOS][^dfjhqwxz]\{2,8\} 20[0-9]\{2\}, [0-9]\{1,2\}:[0-9]\{1,2\} [a\|p]m\s*$' file1 file2

他们都工作得很好。但由于这些不是我想忽略的唯一类型的行,我通过 execSync 将它们与 node.js 进行比较,我想尽可能地缩短它们。

所以我的问题是:是否有更简洁的方法来编写与 diff 的 --ignore-matching-lines 一起使用的正则表达式来实现这一点?

谢谢你的帮助。

标签: regexdiff

解决方案


推荐阅读