解释查找CSS注释的正则表达式

解释查找CSS注释的正则表达式,css,regex,Css,Regex,我在w3.org的页面上找到了这个正则表达式代码,它可以找到注释 \/\*[^*]*\*+([^/*][^*]*\*+)*\/ 它很长,有点难理解。我只是把 \/\**\*\/ 查找注释,但当我在中测试它时,它会查找单行注释而不是多行注释,而原始正则表达式可以查找所有类型的注释 我不明白这是怎么回事 +([^/*][^*]*\*+)* 原始正则表达式中的部分不起作用。有人能给我解释一下吗?逐一解释: \/您只找到单行注释的原因是,在典型的正则表达式中,匹配除换行符以外的任何内容;而另一个使

我在w3.org的页面上找到了这个正则表达式代码,它可以找到注释

\/\*[^*]*\*+([^/*][^*]*\*+)*\/
它很长,有点难理解。我只是把

\/\**\*\/
查找注释,但当我在中测试它时,它会查找单行注释而不是多行注释,而原始正则表达式可以查找所有类型的注释

我不明白这是怎么回事

+([^/*][^*]*\*+)*

原始正则表达式中的部分不起作用。有人能给我解释一下吗?

逐一解释:


\/您只找到单行注释的原因是,在典型的正则表达式中,
匹配除换行符以外的任何内容;而另一个使用的是一个否定字符类,它匹配除指定字符以外的任何字符,因此可以匹配换行符

但是,如果要解决这个问题(通常有一个多行或“好像单行”匹配选项),您会发现它将从第一条注释的
/*
匹配到最后一条注释的
*/
;您必须使用一个非贪婪量词,
*?
,以匹配最多一条注释


但是,您给出的更复杂的正则表达式甚至比这更复杂。根据nikc.org的回答,我认为这是为了实施“评论不能嵌套”的限制;也就是说,它们不能包含
/*
。在允许注释的其他语言中,如/*this*/
(即内部/*既不是禁止的,也不是嵌套注释),模式
\/\*.*?\*\/
适合匹配它们

@kev那个链接对我以后会很有用。。非常感谢。:)@Vigneshwaran回答之后,我找到了Regexper,当我需要深入了解regexp时,我经常使用它。请看下面我的答案,在你的问题中有一个关于正则表达式分解的链接。喜欢分解每个部分的意思,你不会经常得到这个