将不包含BBEdit中的模式的行与Grep匹配

BMM*_*BMM 2 grep bbedit

我找不到正确的grep表达式,因为它不匹配BBEdit中不包含日期的整行,尽管在网上找到了很多"匹配...不包含"主题...

我有这个文本文件:

Some Text
Some more text,even more text,2015-06-17,2015-06-20
A third line of text
Last line of text, 2015-06-17
Run Code Online (Sandbox Code Playgroud)

此表达式将选择包含日期引用的所有行,形式为4位+" - "+ 2位+" - "+ 2位数

^.*\d\d\d\d-\d\d-\d\d.*$
Run Code Online (Sandbox Code Playgroud)

我想完全相反,并打算删除所有不包含日期引用的行.我尝试过类似的解决方案

^.*[^\d\d\d\d-\d\d-\d\d].*$
Run Code Online (Sandbox Code Playgroud)

但到目前为止没有成功.有人能指出我正确的方向吗?谢谢.

ste*_*eax 5

BBEdit支持Perl样式模式扩展(参见手册第183页),包括负向前瞻 (?!...).

我相信这会做你想要的:

^((?![\d\d\d\d-\d\d-\d\d]).)*$
Run Code Online (Sandbox Code Playgroud)

  • 这当然可以解决问题,但可以使用更多解释。我试图做类似的事情,知道我需要一个负面的前瞻,但创建了这样的东西:`^.*(?![^\d\d\d\d-\d\d-\d\d]) .*$` 直到我找到这个页面。显然,我不完全理解附加括号的使用以及为什么一开始不需要`.*`。如果有人可以在评论中详细说明或编辑答案,我将不胜感激。 (3认同)