You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ABNF中的选择运算符采用匹配优先还是最长匹配规则?

ABNF交替分支的匹配规则:最长匹配结论正确

ABNF(由ISO 5234定义)里用斜杠/分隔的可选分支,匹配逻辑是最长优先匹配——当多个分支都能匹配输入前缀时,必须选择能覆盖最长输入内容的分支,而非按分支顺序先到先得。

拿你提到的日期规则举例:

date-century      = 2DIGIT
date-decade       = DIGIT  ; 0-9
date-subdecade    = DIGIT  ; 0-9
date-year         = date-decade date-subdecade
dateopt-century   = "-" / date-century
datespec-year     = date-century / dateopt-century date-year

对于输入2024:

  • 如果按顺序优先匹配,第一个分支date-century只会匹配前两位20,剩下的24无法继续匹配;
  • 但按最长匹配规则,第二个分支dateopt-century date-year能完整匹配2024——dateopt-century匹配20,date-year匹配24,这才是符合规范的正确结果。

补充说明:ISO 5234的初始定义虽未明确写出“最长匹配”,但后续的ABNF补充规范明确了这一强制行为,所有合规的ABNF解析器都需遵循此规则,否则会出现你假设的那种截断输入的问题。

内容的提问来源于stack exchange,提问作者postelrich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 18:40:23