我想了解TTML中timeExpressions的有效格式。 This section of the specification描述了语法。这是一个摘录:
<timeExpression>
: clock-time
| offset-time
clock-time
: hours ":" minutes ":" seconds ( fraction | ":" frames ( "." sub-frames )? )?
offset-time
: time-count fraction? metric
hours
: <digit> <digit>
| <digit> <digit> <digit>+
-- ✂ --
我在某种程度上熟悉该文件的命名,例如:我明白:
|
表示OR(
... )
团体?
意味着可选+
mean?我认为它在正则表达式中意味着“一个或多个”,但如果是这样的话,为什么规范会这样:
hours
: <digit> <digit>
| <digit> <digit> <digit>+
而不是简单地:
hours
: <digit> <digit>+
该文件指出:
使用Kleene运算符?,*和+将信息项的允许内容显示为语法片段。
在那个语法中,+
确实意味着一个或多个。
由于hours
需要为值<10填充零,这两个定义可能就是为了说明这一点。
+表示可以存在一个或多个片段。区分2位数小时和3位或更多位小时组件的原因我相信暗示在某些时基中,小时数只能是2位数,而在其他时间段则可能更多。在任何一种情况下,最小位数是2.我同意只显示<digit> <digit>+
实际上意味着相同的东西,但它不会带有微妙的含义,有时最大位数是2。
“2位或更多位”条目没有说<digit> <digit> | <digit> <digit> <digit>*
的原因是,当存在2位数时,两者将无法区分。据我所知,这是一个不错的选择。