【发布时间】:2010-01-15 14:22:25
【问题描述】:
我有两个文件一直在尝试与 diff 进行比较。这些文件是自动生成的,并具有许多如下所示的行:
//! Generated Date : Mon, 14, Dec 2009
我希望忽略这些差异,并已着手使用“-I REGEX”标志来实现这一点。
但是,“日期”和冒号之间出现的空格数量会有所不同,不幸的是,diff 使用的正则表达式的风格似乎缺少一些基本的正则表达式实用程序。
例如,我一辈子都无法让“一个或多个”加号起作用。同样处理空格的“\s”表示。
diff -I '.*Generated Date\s+:.*' ....
和
diff -I '.*Generated Date +:.*' ....
两者都失败了。
与其继续盲目地尝试,有人可以指出我对正则表达式的 diff 特定子集的一个很好的参考吗?
谢谢!
===== 编辑 =======
感谢 FalseVinylShrub,我已经确定我应该转义我的 '+' 和任何类似字符。这在一定程度上解决了这个问题。 diff 成功匹配
.*Generated Date \+.*
和
.*Generated Date *.*
(注意“日期”和“*”之间有两个空格。)
但是,第二次我尝试将“:”添加到该表达式中,如下所示:
.*Generated Date \+:.*
和
.*Generated Date \+\:.*
两个版本都无法匹配有问题的字符串,并导致 diff 花费大量时间来运行。有什么想法吗?
【问题讨论】:
-
re your ':' 问题:我不知道为什么,但尝试(a)使用 [:] 看看是否可以逃脱任何特殊效果,即使反斜杠没有,或者(b) 使用。如果您不担心误报,可以匹配该位置的任何内容...只是在黑暗中刺伤...