Regex 如何检查同一行中是否有双工?
我有一个文本文件,其中有许多行,如下所示:Regex 如何检查同一行中是否有双工?,regex,date,vim,Regex,Date,Vim,我有一个文本文件,其中有许多行,如下所示: IMG_0106.JPG y:\2004_05_23_bern basel\ 2004_05_23 IMG_0107.JPG y:\2004_05_23_dortmund\ 2004_05_23 IMG_0108.JPG y:\2004_05_25_paris\ 2004_05_24 IMG_0110.JPG y:\2004_05_25_paris\ 200
IMG_0106.JPG y:\2004_05_23_bern basel\ 2004_05_23
IMG_0107.JPG y:\2004_05_23_dortmund\ 2004_05_23
IMG_0108.JPG y:\2004_05_25_paris\ 2004_05_24
IMG_0110.JPG y:\2004_05_25_paris\ 2004_05_25
我想检查一下同一行中是否有双重日期
哪里没有
第1、2、4行有日期匹配。第3行没有日期匹配(2004\u 05\u 25!=2004\u 05\u 24) 我知道如何查找双线,但在这种情况下,我不知道如何在同一行中查找双线。
有人能帮我吗 这应该有效:
grep '\([0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}\).*\1'
这个带有regex的
:g
命令将为您提供具有重复日期的行,您可以在这些行上执行操作:
:g/\v(\d{4}_\d{2}_\d{2}).*\1
如果你只是想找到它们(或者用hlsearch突出显示它们),只需做
/sameRegex
谢谢你,肯特:)什么是\1
?顺便问一下,您知道否定方式(如何仅突出显示不匹配的项目)?@remann\1
参考组1、\2
参考组2,等等。这里的\1
是先前匹配的日期(在(..)
中)。如果您想选择那些不匹配项,请使用v:/…
而不是:g/…
谢谢,我原以为您的正则表达式也会匹配我问题中的第3行,但效果很好(仍然不知道为什么它与第3行不匹配)。和。。我只想突出显示日期,但我会找到的。:)非常感谢你!,仍然没有发现如何只突出显示日期,而不是中间的文本。你知道吗?那就是:g或:v找出带有dup/un dup日期的行。匹配部分高亮显示。如果要进一步突出显示。这是另一个话题。对于匹配行中的一个日期,您可以:v/\v\zs(\d{4}\ud{2}\ud{2})\ze.*\1/