Regex 解释RFC 2141中NID的BNF语法
我无法理解来自的一些语法 该行是Regex 解释RFC 2141中NID的BNF语法,regex,syntax,bnf,ebnf,urn,Regex,Syntax,Bnf,Ebnf,Urn,我无法理解来自的一些语法 该行是:=[1,31]。我认为这意味着是字符串的符号,受两条规则约束: 字符串必须以任何字符的一次出现开始 此字符后面可能有0-31个出现次数*的字符 我读对了吗?因为,如果我是的话,其中的一些含义有点让人困惑 *相当于“可选1-31次 中(命名空间标识符)的完整BNF语法为: :=[1,31] ::= | | | "-" ::= | | ::=“A”|“B”|“C”|“D”|“E”|“F”|“G”|“H”| “I”|“J”|“K”|“L”|“M”|“N”|
:=[1,31]
。我认为这意味着
是字符串的符号,受两条规则约束:
字符的一次出现开始
字符
(命名空间标识符)的完整BNF语法为:
:=[1,31]
::= | | | "-"
::= | |
::=“A”|“B”|“C”|“D”|“E”|“F”|“G”|“H”|
“I”|“J”|“K”|“L”|“M”|“N”|“O”|“P”|
“Q”|“R”|“S”|“T”|“U”|“V”|“W”|“X”|
“Y”|“Z”
::=“a”|“b”|“c”|“d”|“e”|“f”|“g”|“h”|
“i”|“j”|“k”|“l”|“m”|“n”|“o”|“p”|
“q”|“r”|“s”|“t”|“u”|“v”|“w”|“x”|
“y”|“z”
::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" |
"8" | "9"
您已经正确地解释了它。有什么令人困惑的含义
<NID> ::= <let-num> [ 1,31<let-num-hyp> ]
:=[1,31]
表示一次出现的
,之后可选地出现多达31次的
考虑到其他定义,这意味着一个至少包含一个字符、最多32个字符的字符串,由大小写字母、数字和连字符组成,第一个字符不允许是连字符。我就是这样理解的。什么含义让人困惑?你在问题中没有问过任何问题。@Merlyn Morgan Graham,@Don Roby-我感到困惑,因为“名称空间”的进一步划分位于
(名称空间特定字符串)中,而不是位于NID
(名称空间标识符)中。例如,在urn:my namespace:my sub namespace:my resource name
中,方案是urn
,NID
是my namespace
,NSS
是my sub namespace:my resource name
。我错误地认为my namespace:my sub namespace
将是NID
的内容,但在重新阅读规范后,我意识到了我的错误。
<NID> ::= <let-num> [ 1,31<let-num-hyp> ]