首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止ABNF中的重复字符

防止ABNF中的重复字符
EN

Stack Overflow用户
提问于 2014-11-03 18:45:15
回答 1查看 79关注 0票数 2

我想要创建一个包含字符"imsxeADSUXju“的ABNF规则。每个字符都是可选的。顺序并不重要,但一个字符不可能出现不止一次。

它必须匹配。

代码语言:javascript
复制
"i" "im" "mi" "" "uUsejXx" "imsxeADSUXju"

但不匹配

代码语言:javascript
复制
"iim" "UmUu" "imsss"

我创建了以下规则,但它不会阻止一个字符出现多次:

代码语言:javascript
复制
options = 0*12( "i" / "m" / "s" / "x" / "e" / "A" / "D" / "S" / "U" / "X" / "j" / "u" )

在这一规则中,命令很重要:

代码语言:javascript
复制
options = [ "i" ] [ "m" ] [ "s" ] [ "x" ] [ "e" ] [ "A" ] [ "D" ] [ "S" ] [ "U" ] [ "X" ] [ "j" ] [ "u" ]

我怎么能写一个规则,忽略顺序,但也防止双倍?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-13 21:34:13

不幸的是,你必须写出所有的备选方案。忽略ABNF是不区分大小写的,它必须是

代码语言:javascript
复制
  S        = "i" after-i /
             "m" after-m /
             ...
  after-i  = "m" after-im /
             "s" after-is /
             ...
  after-im = "s" after-ims /
             ...

这里的语言是规则的,如果您考虑语言的最小DFA是什么样子的话,它必须有2^12个状态,每个状态对应于字母表powerset中的一个元素,编码已经看到的字符。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26720887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档