我发现这个正则表达式代码在w3.org的CSS语法页面中找到了注释.
\/\*[^*]*\*+([^/*][^*]*\*+)*\/
Run Code Online (Sandbox Code Playgroud)
这很长很难理解.我只是说
\/\*.*\*\/
Run Code Online (Sandbox Code Playgroud)
找到评论,但是当我在RegexPal中测试它时,它找到单行注释而不是多行注释,而原始正则表达式可以找到所有类型的注释.
我不明白是什么
+([^/*][^*]*\*+)*
Run Code Online (Sandbox Code Playgroud)
原始正则表达式中的部分.谁能解释一下这个?
nik*_*org 15
令牌解释令牌:
\/ <- an escaped '/', matches '/'
\* <- an escaped '*', matches '*'
[^*]* <- a negated character class with quantifier, matches anything but '*' zero or more times
\*+ <- an escaped '*' with quantifier, matches '*' once or more
( <- beginning of group
[^/*] <- negated character class, matches anything but '/' or '*' once
[^*]* <- negated character class with quantifier, matches anything but '*' zero or more times
\*+ <- escaped '*' with quantifier, matches '*' once or more
)* <- end of group with quantifier, matches group zero or more times
\/ <- an escaped '/', matches '/'
Run Code Online (Sandbox Code Playgroud)
您的原因只发现单行注释,在典型的正则表达式中,.匹配除换行之外的任何内容; 而另一个使用一个否定的字符类,它匹配除指定字符之外的任何内容,因此可以匹配换行符.
但是,如果你要解决这个问题(通常有一个多行选项或"好像是单行匹配"),你会发现它会匹配/*第一个评论*/和最后一个评论的匹配.你将不得不使用非贪婪量词,.*?以匹配不超过一个评论更多.
但是,您提供的更复杂的正则表达式甚至比这更复杂.根据nikc.org的回答,我认为是强制执行"评论可能不会嵌套"的限制; 也就是说,它们不得包含/*在其中.在允许注释的其他语言中/* like /* this */(即,内部/*既不被禁止也不是嵌套注释),该模式\/\*.*?\*\/适合于匹配它们.
| 归档时间: |
|
| 查看次数: |
4144 次 |
| 最近记录: |