FastParse parser-combinator scala库为您提供了 .rep(n)
'Repeat'方法,可让您创建一个新的解析器,尝试解析给定的Parser n
或更多次。如果我想精确地匹配n
,什么是规范的方法?
就我而言,我想解析一个40个字符的Git提交ID-如果长度超过40个字符,则不是提交ID,并且不应该匹配。
到目前为止,我在文档中找到的最接近的示例是:
val unicodeEscape = P( "u" ~ hexDigit ~ hexDigit ~ hexDigit ~ hexDigit )
...以简单的重复方式匹配4个字符(表示40个字符的提交ID的详细信息)。
这些是解析器组合器,而不是正则表达式,其答案将类似于
\p{XDigit}{40}
。 最佳答案
由于issue被此commit关闭,因此rep支持max关键字参数。现在,它还支持完全关键字参数。
hexdigit.rep(exactly = 40)