马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ABNF是各类RFC中经常遇到的数据定义语法,在此把他的语法简单做个总结,所有内容均参照RFC5234的内容和结构。
1 规则定义 rule = definition ;comment
一条语句以回车换行结束。其中rule为规则名,大小写不敏感;definition为规则的具体定义; ';'后作为注释
2 定义字符
语法:%<进制><具体数字>
<进制>有二进制,十进制,十六进制,分别表示为b,d,x;
例子: CR=%d13
CR=%x0D
也可以用空格或'.'连接多个字符:
rulename = %d97 %d98 %d99
等价于 rulename = %d97.98.99
最终效果相当于"abc"
3. 定义字符串
字符串用双引号包括。
command = "command string"
注意:字符串内的字符都是大小写不敏感的,所以如需要特别注明大小写,需要用上一条单独定义字符。
4. 各类操作符
(a) rule=rule1 rule2; 规则相加 foo = %x61 ; a
bar = %x62 ; b
mumble = foo bar foo ;mumble最终效果aba
(b) rule=rule1/rule2; 规则多选一 mumble=foo/bar ; mumble可以等于foo或bar
在实际使用中,'/'经常用'|'代替;
(c) rule1=/rule2; 相当于rule1=rule1/rule2;
(d) 用'-'定义多选范围
DIGIT = %x30-39
等价于DIGIT = %x30 / %x31 / %x32 / %x33 / %x34 / %x35 / %x36 /%x37 / %x38 / %x39
(e) 用()组合规则,在()内的规则。对()外的规则来说,()内的规则被当作单独的规则对待。
(foo / bar) blat
效果相当于 foo blat / bar blat
(f) 多次重复规则
语法稍复杂,完整定义为<a>*<b>element,表示最少重复a次,最多重复b次element规则
如<a>略去,表示最小0次;如<b>略去,表示做多无限次;如<a><b>都略去,表示最小0次,最多无限次。
1*3CHAR ;表示最少1个,最多3个CHAR
*3CHAR ;最少0个,最多3个CHAR
*CHAR ;没有或任意多个CHAR
(g) 指定重复次数规则
语法格式:n<element>,表示n次重复element规则
如 4CHAR ;表示CHAR重复4次
(h) 用[]表示可选规则
语法[rule]
如 mumble= foo [bar]; bar可选,mumble可以是foo或foobar
操作符的优先级顺序(从高到低排列):
规则名, 字符串或字符
注释 ;
多选范围 -
多次重复或指定重复 * 或n<element>
组合规则(), 可选规则[]
规则相加: rule1 rule2
多选一规则: /
|