Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 匹配Parboiled中的{N,M}字符_Scala_Parboiled - Fatal编程技术网

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