如何匹配以#开头但不是十六进制颜色的注释

时间:2009-09-24 21:59:23

标签: regex

我无法弄清楚如何在正则表达式中匹配注释而不是HTML十六进制。例如,我希望脚本匹配

#I'm a comment, yes I am

但不是

#FF33AF

3 个答案:

答案 0 :(得分:2)

你可以使用负向前瞻。从python文档:

(?!...)

匹配如果......下一个不匹配。这是一个负面的先行断言。例如,Isaac(?!Asimov)只有在没有'Asimov'的情况下才会匹配'Isaac'。

答案 1 :(得分:2)

要正确完成工作,您需要一个解析器而不是正则表达式匹配器。例如,“#decade”是注释还是颜色名称?没有一点背景你就无法知道。

答案 2 :(得分:1)

嗯,显而易见的正则表达式将是:

(?m-:^\s*#(?![0-9A-Fa-f]{6}).*$)

这将为您提供以“#”开头的所有行。从你的帖子你不是非常具体,但我认为这是你正在寻找的。

更新:

更正为仅允许六个:

(?m-:^\s*#(?![0-9A-Za-z]{6}\s*$).*$)