匹配 Parboiled 中的 {N,M} 个字符

Match {N,M} chars in Parboiled

如何为

编写规则

在半熟吗?

您可能正在寻找 times 组合器。您可以将 times 与单个 Int 一起使用(意味着将规则重复 n 次)或与 (Int, Int) 一起使用(意味着在 nn 之间重复规则m 次)。您可以将 timesoneOrMorezeroOrMore~! 一起使用以获得所需的效果:

//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
}