使用Grep和Regex匹配HTML注释

3

我有一系列包含html注释(<!-- some comment -->)的文件,我想要使用grep来匹配它们。

注释只跨越一行。

这是我的命令:

grep -rl '<!--.*?-->' ./

这个不匹配。但如果我使用这个正则表达式运行grep:

grep -rl '<!--.*?' ./

它有效。

原始正则表达式在 javascript 中有效,但 grep 似乎不喜欢它,原因我不知道。

谢谢。


注释是否跨越多行?您所说的“失败”是什么意思?它没有找到所有带注释的文件,还是根本找不到匹配项? - michele b
1
如果你使用 egrep,那段代码应该可以正常工作。 - Moses
是的。在你写这个之前,我刚刚尝试了egrep写入并且它可以工作。 - Trevor
出于好奇,你知道在一个已知有注释的单个文件上,是否也可以不使用“-rl”选项来运行? - michele b
是的,在单个文件上它可以不使用选项而正常工作。 - Trevor
2
哈哈哈,终于有关于HTML的事情可以用正则表达式作为好工具了(HTML注释不是嵌套的,因此可以构建一个正则语言)。 - Callum Rogers
2个回答

1

grep 中默认的正则表达式引擎(POSIX 基本)不支持 ?。这个方法可行,因为 . 也会匹配空格:

grep -rl '<!--.*-->' ./

Grep 也不会跨行匹配。 - Greg Inozemtsev

0

Egrep 是另一种选择。

egrep -r '<!--.*?-->' ./

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接