【发布时间】:2012-05-22 20:49:22
【问题描述】:
我想问这个作为我previous similar question 的更新,但它变得太长了。
我试图理解w3.org 中给出的与css cmets 匹配的正则表达式并得到了这个疑问
他们为什么使用
\/\*[^*]*\*+([^/*][^*]*\*+)*\/
----------------^
而不仅仅是
\/\*[^*]*\*+([^/][^*]*\*+)*\/
?
两者的工作方式相似。为什么他们那里有一颗额外的星星?
-
让我们看看这部分:
\*+([^/*][^*]*\*+)* -A- --B-- -C-Regex 引擎将解析 A 部分并匹配所有星,直到没有更多星或出现换行符。因此,一旦 A 完成,下一个字符必须是换行符或其他任何不是星号的字符。那为什么不使用
[^/],而是使用[^/*]? -
还要查看重复捕获组。
([任何 一个 字符不是 / 或 *][零个或多个字符不是 *][一个或多个星])
它捕获以至少一个或多个星号结尾的字符组。所以 C 将把剩下的所有星星都带走,而 B 没有星星在下一轮匹配。
所以B部分根本没有机会见到任何明星。这就是为什么我认为没有必要在那里放一颗星。
但是那个正则表达式在 w3.org 中,所以我想我的理解可能是错误的。请解释我缺少什么。
【问题讨论】:
标签: css regex comments regex-negation