我最近阅读了一份RFC文档,我注意到使用过的正则表达式运算符与众所周知的不匹配。例如:
date-time = [ day-of-week "," ] date time [CFWS]
year = (FWS 4*DIGIT FWS) / obs-year
方括号表示它只匹配其中几个字符中的一个。但是在RFC中我看到他们将其解释为"可选"。与asterix相同,即前面的标记将出现零次或更多次。在我们的例子中
4*DIGIT
这不难猜测,这意味着4次出现DIGIT令牌。
我应该如何解释RFC文档正则表达式运算符,是否有任何文档描述它们的名称?
答案 0 :(得分:2)
您正在查看的文件(我相信),RFC 2822,说明了这一点:
1.2.2。句法符号
本标准使用Augmented Backus-Naur形式(ABNF)表示法 在[RFC2234]中指定的语法的正式定义 消息。
所以,是的,语法是在RFC 2234中定义的,而不是正则表达式。
针对您引用的块的几个部分:
3.5序列组
括在括号中的元素被视为单个元素, 其内容严格要求。
3.6变量重复
运营商" *"元素前面表示重复。满满的 形式是:
<a>*<b>element
其中&lt; a&gt;和&lt; b&gt;是可选的十进制值,至少表示 &LT a取代;并且至多&lt; b&gt;元素的出现。
3.8可选序列
方括号括起一个可选的元素序列: