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)

09-03 21:38