4

如何编写规则

  • 至少 N 个字符 - 正则表达式 [az](2,}

  • 最多 N 个字符 - 正则表达式 [az](,5}

  • 从 N 到 M 字符 - 正则表达式 [az]{3,10}

在煮熟的?

4

1 回答 1

2

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

//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
}
于 2015-04-09T03:03:15.037 回答