Scala 匹配Parboiled中的{N,M}字符
我该如何为你写一条规则Scala 匹配Parboiled中的{N,M}字符,scala,parboiled,Scala,Parboiled,我该如何为你写一条规则 至少N个字符-regex[a-z](2,} 最多N个字符-regex[a-z](,5} 从N到M chars-regex[a-z]{3,10} 在Parboiled?中,您可能正在寻找时间组合符。您可以将时间与单个Int(意思是精确地重复规则n次)或(Int,Int)(意思是在n和m次之间重复规则)。您可以将时间与一个或多个、零个或多个、~和!一起使用,以获得所需的效果: //Matches regex "a{n,}" rule { n.times("a")
- 至少N个字符-regex[a-z](2,}
- 最多N个字符-regex[a-z](,5}
- 从N到M chars-regex[a-z]{3,10}
在Parboiled?中,您可能正在寻找
时间
组合符。您可以将时间
与单个Int
(意思是精确地重复规则n
次)或(Int,Int)
(意思是在n
和m
次之间重复规则)。您可以将时间
与一个或多个
、零个或多个
、~
和!
一起使用,以获得所需的效果:
//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
}
请注意,如果您不想获得更高的性能(n