我想要创建一个包含字符"imsxeADSUXju“的ABNF规则。每个字符都是可选的。顺序并不重要,但一个字符不可能出现不止一次。
它必须匹配。
"i" "im" "mi" "" "uUsejXx" "imsxeADSUXju"但不匹配
"iim" "UmUu" "imsss"我创建了以下规则,但它不会阻止一个字符出现多次:
options = 0*12( "i" / "m" / "s" / "x" / "e" / "A" / "D" / "S" / "U" / "X" / "j" / "u" )在这一规则中,命令很重要:
options = [ "i" ] [ "m" ] [ "s" ] [ "x" ] [ "e" ] [ "A" ] [ "D" ] [ "S" ] [ "U" ] [ "X" ] [ "j" ] [ "u" ]我怎么能写一个规则,忽略顺序,但也防止双倍?
发布于 2015-03-13 21:34:13
不幸的是,你必须写出所有的备选方案。忽略ABNF是不区分大小写的,它必须是
S = "i" after-i /
"m" after-m /
...
after-i = "m" after-im /
"s" after-is /
...
after-im = "s" after-ims /
...这里的语言是规则的,如果您考虑语言的最小DFA是什么样子的话,它必须有2^12个状态,每个状态对应于字母表powerset中的一个元素,编码已经看到的字符。
https://stackoverflow.com/questions/26720887
复制相似问题