那是什么?在W3C CSS规范的标记化部分中意味着什么?

fge*_*fge 6 css unicode grammar lex

自从我与cssparser可怕的经验,我已经给自己设定了实现用Java编写的CSS解析器的任务蒸谷米.我已经涵盖了所有颜色规格,但当然我需要所有其他的......

所以,我去寻找CSS规范并在W3C网站上找到它.我现在正在为所有"原子"编写规则,但在本节中发现了令人不安的事情:

UNICODE-RANGE   u\+[0-9a-f?]{1,6}(-[0-9a-f]{1,6})?
Run Code Online (Sandbox Code Playgroud)

打扰我的部分是问号[0-9a-f?].

段落标题说这里使用的正则表达式是Lex风格.在?有字符类(感谢@scizzo为确认)没有任何特殊含义.那么,这是W3C规范中的拼写错误,还是?真的允许在Unicode范围内?如果是,那是什么意思?

总结:我有答案.但是,规范错误的:"问号unicode范围"只能是它本身.鉴于上述正则表达式,这个表达式将被允许,而它显然是非法的:u+4??-733f

scz*_*zzo 4

是的,这是一个字面上的问号。来自 Flex 文档

请注意,在字符类内部,除了转义符 ('\') 和字符类运算符 '-'、']' 以及类开头的 '^' 之外,所有正则表达式运算符都会失去其特殊含义。

现在,根据 W3C,?可以用作一种通配符

?字符表示“任何数字值”(例如 U+4??)