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]
。我认为这意味着
是字符串的符号,受两条规则约束:

  • 字符串必须以任何
    字符的一次出现开始
  • 此字符后面可能有0-31个出现次数*的
    字符
  • 我读对了吗?因为,如果我是的话,其中的一些含义有点让人困惑

    *相当于“可选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> ]