我该如何编写规则?
>至少N个字符 – 正则表达式[a-z](2,}
>最多N个字符 – 正则表达式[a-z](,5}
>从N到M个字符 – 正则表达式[a-z] {3,10}
在Parboiled?
最佳答案 您可能正在寻找时代组合子.您可以使用单个Int的时间(意味着重复规则n次)或使用(Int,Int)(意味着在n和m次之间重复规则).你可以和oneOrMore,zeroOrMore,〜和!一起使用时间.为了达到预期的效果:
//Matches regex "a{n,}"
rule {
n.times("a") ~ zeroOrMore("a") //match on n "a"s followed by zero or more "a"s (so at least n "a"s)
}
//Matches regex "a{,m}"
rule {
!(m.times("a") ~ oneOrMore("a")) //do not match on m "a"s followed by one or more "a" (so at most m "a"s)
}
//Matches regex "a{n, m)"
rule {
(n to m).times("a") ~ EOI
}